Если не получается достать данные в нужном виде с помощью стандартных методов билдера Laravel (типа where find и т.д.), что лучше – рав запросы или работа с коллекцией? Для коллекций много методов, для билдера – мало. Но разработчики все равно ищут запросы. Значит коллекции, как-то грузят систему. Насколько критично в сравнении с запросами?
jazzus, из чего ты делаешь вывод, что это ларавел-специфичная задача? А что, в каком-нибудь Yii нет raw-запросов и коллекций? Или если использовать Doctrine вместо Eloquent, то что принципиально изменится?
JhaoDa, я не думаю, что это Ларавел-специфичная задача. Создал тему здесь т.к. здесь в основном адекватные и быстрые ответы на темы, приближенные к Ларавель (коллекции и т.д). Какой тег мне все равно. Не понимаю, как тег может стать предметом для дискуссии
А как вы думаете, что производительней: целая БД, разрабатываемая на быстром c++ с кучей оптимизаций, где ВСЕ заточено под ее нужды, или какой-то рыхлый класс-обертка в пхп? Как думаете, сколько памяти займет mysql для обхода миллиона записей, а сколько пхп?
Мне тут буквально вчера один прогер пишущий для MSSQL доказывал что MySQL - это ВООБЩЕ не БД)))))) потому что не соответствует какому-то там "третьему состоянию" или я уже точно не помню всю эту заумь)))
Я думал, что запросы к бд зло. Но методы коллекций не юзал. Только get.. Недавно узнал о множестве остальных. Сделал один сложный запрос через коллекции, уже собрался и дальше злоупотреблять.
jazzus, множество запросов к бд (гугли n+1 запросы) - плохо. Большие, неоптимизированные запросы - тоже. Некоторые конструкции - тоже, как и многое другое, но в сравнении с коллекциями - это цветочки.
Коллекции можно смело использовать, если у вас уже есть сет нужных данных (например связь -to-many), этот сет небольшой, и вам проще один раз его достать, сделать десять разных манипуляций и забыть о нем, ежели писать 10 разных запросов разной сложности.
Все зависит от конкретной ситуации и ленивости программиста, но можно выделить одну закономерность (из моего опыта, не факт что сработает в вашем случае): чем сложнее задача, тем вероятней что лучше использовать sql запрос.
jazzus, raw запросы нужны там, где билдер не справляется. В остальных же случаях смело используйте билдер, он всего-лишь выстраивает такой-же raw запрос и к коллекциям отношения не имеет.
1. Запускать в цикле 100000 получений одних и тех же данных разными способами (элокентом, равзапросами, через фасады, через инъекции зависимостей и пр)
2. Измерить все это.
3. Запилить статью на хабр "Коллекции vs SQL, или зачем ЖаоДа удаляет теги"
...
Profit!!!