@CaptainJustness

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

Какой вариант структуры файлов моделей в Laravel лучше? Хочу сразу определиться на начальном этапе.

Вариант 1:
app\Models\Blog\Post.php
app\Models\Blog\Category.php
app\Models\Blog\Tag.php
app\Models\Shop\Order.php
app\Models\Shop\Product.php

Вариант 2:
app\Models\BlogPost.php
app\Models\BlogCategory.php
app\Models\BlogTag.php
app\Models\ShopOrder.php
app\Models\ShopProduct.php

В 1 варианте автоматическое заполнение имени таблицы $table ломается, поэтому в каждой модели придется указывать вручную. Но зато вроде как более структурировано.
В 2 варианте автоимена работают. Но получается, что все в куче.

Как вариант более грамотен?
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
vhood
@vhood
Не забывайте отмечать решения
Для маленького проекта разницы нет. Можно использовать тот вариант, что быстрее.

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

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

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

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

Руками прописать свойство $table в модель это дело одной минуты.
Ответ написан
Adamos
@Adamos
Вариант 3.
Не валить в app вообще.
Создать свою папку под свои классы - MyCompany.
В ней программировать модули раздельно (предполагая, что они в таком виде, возможно, пойдут и в другие проекты):
MyCompany\Blog\Models\Post.php
MyCompany\Shop\Models\Order.php
Кстати, и в БД потом таблицы смотреть куда проще, когда мухи с котлетами не перемешаны.
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега Laravel
frontend developer
Если проект большой, я бы вообще предпочел разделение по группам ответственности.
Для ларки есть отличный пакет для этого – nwidart/larabel-modules
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы