Laravel: Имеет ли смысл выносить SQL-запросы из контроллера в модель?

132
27 марта 2018, 02:06

У меня в контроллере стало слишком много SQL-запросов. В смысле, самих запросов-то не так много, но они довольно длинные. Думаю о том, куда бы их лучше вынести из контроллера. Может, создать модель страницы и вынести туда?

Только убедительная просьба - не отвечайте абстрактно типа "это можно сделать самыми разными способами, всех и не перечесть". Пожалуйста, предложите конкретное решение, которое Вы считаете лучшим.

Мне особенно понравился такой пример организации модели, предложенный на Laracasts:

app
     /myApp (or project)
        /posts (post example, but same for all product features, Users, etc. I remove directories that are not relevant)
            /repository
            /contracts
            /commands
            /services
            /exceptions
            /events
            /documentation (I like to keep project documentation in the relevant areas vs centralized )
            /middleware
            Abstract class
            Post.php (model)
            PostManager.php (management code)

Я пока до конца не понимаю назначение и особенности всех этих элементов модели, но хотел бы разобраться.

Answer 1

Если там пару строчек то не надо, если там сложные выборки, условия, фильтры, сортировки и тд то лучше выносить в модель чтобы не захламлять контроллер. В контроллерах должно быть минимум функционала, вся логика должна быть в моделях или в сервисах. Вся логика, что касается базы данных - в моделях

READ ALSO
не сохраняет массив объектов класса

не сохраняет массив объектов класса

Массив books заполняется, но после перехода в main массив очищается, и присваивается другой адресКак сделать, чтоб поиск происходил в заполненном...

178
Переосмысление указателей

Переосмысление указателей

Я часто пишу разную ерунду для эксперимента (чтоб получше понять что к чему)Вот одна из них:

190
Ошибка: During startup program exited with code 0xc0000135 при вызове функции с Opencv

Ошибка: During startup program exited with code 0xc0000135 при вызове функции с Opencv

Я переустанавливал WIndows, qt у меня находиться тут:

182
Работа с Русским языком в Visual Studio C++

Работа с Русским языком в Visual Studio C++

Нашёл, как мне показалось, очень полезную статью: ссылка

175