В Laravel нужно ли мне создавать отдельную модель и контроллер для каждой таблицы / коллекции базы данных? - PullRequest
0 голосов
/ 17 июня 2020

Я разрабатываю небольшое приложение с PHP веб-фреймворком Laravel v6 и MongoDB (с jenssegers moloquent ) в качестве движка базы данных. Это моя первая встреча с любым фреймворком MVC. У меня есть следующие коллекции в моей базе данных:

  1. allPaintingsCollection
  2. paintingHistoriesCollection
  3. paintingCategoriesCollection
  4. artGalleriesCollection
  5. paintingArtistsCollection
  6. supervisorArtistsCollection
  7. smPlatformsCollection
  8. nonSmPlatformsCollection
  9. targetSchoolsCollection

Я следовал этому руководству . У меня есть два следующих вопроса:

  1. Нужно ли мне создавать отдельную Модель (отдельный класс в отдельном файле) для каждой коллекции выше?
  2. Нужно ли мне создавать отдельную Контроллер (отдельный класс в отдельном файле) для каждой коллекции выше?

1 Ответ

1 голос
/ 18 июня 2020

Новый ответ: 1. Да, вам нужно будет создать отдельную модель для использования ORM. В идеале модель должна поддерживать только одну коллекцию, так что вы можете создавать собственные logi c. Помните, One Model One Collection / Table.

Для контроллеров вы можете писать как хотите, вы можете использовать все модели внутри одного контроллера. Но то, что я узнал до сих пор, используя Laravel, вы должны создать один контроллер для каждой модели, чтобы полностью и логически поддерживать разделение проблем.

Знайте BTS:

Laravel активно использует функции автозагрузчика PHP Composer, поэтому наличие нескольких классов в одном файле не сработает.

Например, при запуске автозагрузчика он будет искать класс User в файле \ App \ Models \ User. php. Наличие нескольких классов в одном файле не поможет в этом случае.

Последняя версия Laravel соответствует стандарту PSR-4 . Вы можете взглянуть на него для большего понимания.

Для получения дополнительных PHP стандартов кодирования вы можете взглянуть на стандарты PSR-2 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...