Какая структура файлов моделей в Laravel является наилучшей?

Как лучше организовать структуру файлов моделей в Laravel: разделить модели по поддиректориям в соответствии с их функциональным принадлежностью (как в варианте 1), или же разместить все модели в одном каталоге с четкими именами (как в варианте 2)? Какая из этих структур является более предпочтительной с точки зрения правильной организации проекта?
  • 2 апреля 2024 г. 9:59
Ответы на вопрос 4
Обе структуры имеют свои плюсы и минусы, и выбор зависит от конкретных потребностей проекта. 

1. Вариант 1: разделение моделей по поддиректориям в соответствии с их функциональным принадлежностью. Этот подход может быть удобен, если у вас большое количество моделей или если проект имеет сложную архитектуру. Такая структура позволяет легче найти нужную модель, улучшает читаемость кода и облегчает поддержку проекта. Однако, с увеличением количества моделей, структура может стать излишне сложной и запутанной.

2. Вариант 2: размещение всех моделей в одном каталоге с четкими именами. Этот подход подходит для небольших проектов или если у вас небольшое количество моделей. Такая структура проще в реализации и понимании, но может стать неудобной при большом количестве моделей.

Исходя из вышеописанного, наилучшей структурой файлов моделей в Laravel будет зависеть от конкретного проекта. Рекомендуется выбирать наиболее подходящий вариант в зависимости от размера и сложности проекта, учитывая возможность изменения структуры в будущем, если потребности проекта изменятся.
Для маленького проекта разницы нет. Можно использовать тот вариант, что быстрее. 

Если хочется знать, есть ли архитектурный паттерн для группировки сущностей - то это DDD (Domain Driven Design). Судя по всему, можно выделать 2 агрегата - Shop и Blog.

Однако, до изучения темы, лучше выстраивать архитектуру на основе известных принципов программирования.
app\Models\Post.php 
app\Models\Category.php
app\Models\Tag.php
app\Models\Order.php
app\Models\Product.php

И учиться проектировать базу данных без кучи мусора вроде OrderTag PostTag и тд

Имхо: через какое-то время будешь туда только заглядывать чтобы вспомнить что-нить а если не лениться писать комментарии (ну и плагины ide всякие для удобства) то и вообще не будешь.
Имхо2: в модули не сильно запаривайся - хлебнешь лишнего головняка. Рано или поздно для своего же удобства начнешь выносить часть функционала и найдешь свой путь.
Лучше первый :) Особенно если проект большой и будет много моделей. 

Руками прописать свойство $table в модель это дело одной минуты.
Похожие вопросы