Может войдёшь?
Черновики Написать статью Профиль
SeaSnake

SeaSnake

Вступил в наши ряды: 28 апреля 2019

Замечен в последний раз: 28 апреля 2019

Не писал на форуме

Вы сможете отправить письмо, если войдёте

Комментарии (1)

SeaSnake

По поводу collection vs array, например — https://www.reddit.com/r/laravel/comments/44a2p2/laravel_collection_vs_array_performance/

Логично, что коллекция будет отъедать перфоманс — за удобство приходится платить. Но опять таки, как правильно пишут люди, если вы перебираете коллекцию на миллион записей, у вас что-то неправильно в sql.

По поводу вьюх и моделей мое мнение, что слой БД отдельно, слой представлений отдельно — не должны вьюхи обращаться с БД. Если уж никак не позволяет ситуация разрешить создание данных в контроллере, то значит нужен какой-то компонент (сервис) для вьюх. Но лучше решать это на уровне контроллера, сервисов. В некоторых случаях можно наверное для удобства сделать модели данных (не Eloquent). Вобщем ситуации бывают разные, но вьюха к бд не обращается — неправильная архитектура.

Да и в целом, многие понимают паттерн MVC слишком буквально как по мне. Холивары «тонкий контроллер-толстая модель» и наоборот гремят с неослабевающей силой. Но как по мне, тонкими должны быть оба — single responsibility. А контроллер распределяет логику между сервисами (компонентами), ивентами и пр. частями приложения и отдает уже полученные от них данные в виде переменных во вьюху. Напрямую контроллер у меня не часто «знает» про модель.

Что касается «жадных загрузок», вьюх, Eloquent — вообще если данные будут использоваться в цикле (не только вьюха), то конечно только «жадная». Миллион не миллион, но даже например 500 обращений к БД в цикле — уже караул какой-то (а 500 ведь не предел). Но это понимание наверное придет с практикой, некоторые например запихивают какой-то select в цикл, вместо того чтоб выбрать нужные данные перед циклом и потом копаться уже в массиве или коллекции. Хотя ситуации бывают разные как говорится =)