вопросов, но вот Eloquent кажется мне замудреным и требующим больше времени. Не понимаю пока (не имея опыта) почему он чаще используется. Но так как чаще - то пытаюсь учить его и вот значит какой вопрос. Есть у меня запрос с объединением нескольких таблиц. Я создал Eloquent моделяи для каждой таблицы, прописал соотношения между ними и пытаюсь с помощь GPT переписать этот запрос, но получаются на 80-90% тоже самое. Это GPT тупит или реально сложные запросы нужно писать через Query Builder и не выкручивать себе мозх?
елка - связи, а ты сырой запрос пишешь сначала разберись со связями
Я же писал что GPT мне подсказывает елка-запрос который почти ничем не отличается от сырого. Вот я и спрашиваю это GPT гонит или тут реально никак не упростить?
ну а я же писал о том что тебе нужно прочитать документацию ларавеля и разобраться что такое елка и связи
chatgpt - чат-бот, а не разработчик. елка - не упрощение/улучшение сырых запросов, это ORM в первую очередь. которая использует QueryBuilder, поэтому тебе бот и написал тот же код только с использованием модели, где table() само подставило. а касательно твоего вопроса - не все выборки пишут на моделях, если тебе ORM не нужна и функциональность елки приносит проблему, то нет проблем отказаться и составить запрос на QB или вообще чистым SQL самому написать. в твоем примере можно на связи перейти. в документации всё есть. у тебя джойнится таблица категорий - это обычная связь. таблица адресов - для выборки, у елки тоже есть методы, что бы выбирать по связи. прежде всегда надо понять что такое ORM в чем ее бонусы и будет понятнее когда ее юзать, а когда нет.
Кстати, получается что если проект разрастается до уровня хайлоад, то нужно запросы ёлки переписывать на DB:: ?🤔 Почему так думаю - ёлка при джоине таблицы делает два отдельных запроса + на уровне пхп соединяет в коллекцию.. а через сырой запрос одним запросом всё
на ларе бывает хайлоад?
Хз, хз) Как минимум слышал то, что для апи проекта можно отключить веб сессии, и будет чуть быстрее всё летать)
Спасибо за ответ! Правильно ли я понимаю, что елка упрощает простые запросы к одной таблице или же сохранение/изменение через save(), но если есть запрос с объединением 2 и более таблиц, можно использовать фасад и это не будет считаться говнокодом? Или же если в проекте используется елка и я влезу с фасадом меня зачмырят?
"один запрос быстрее двух" - это не обязательно. много мелких запросов против одного жирного. это относительная проблема, особенно если речь начнет заходить о конкурентной среде. "хайлоад" в мире пхп, это все конечно прекрасно, но ларка это жирный жир и не про скорость. а вообще да, отказываются от ORM. иногда имеет смысл сразу написать запрос на чистом билдере, если тебе не нужна вся функциональщина ORM, прирост на чтении более 1К записей обычно сильно выигрывает елку. разница уже заметна на выборках в 100 записей, но вопрос с десятитысячных секунды, а вот на 1К+ уже до сотых-десятых разница будет. "ёлка при джоине таблицы делает два отдельных запроса" нет, join это оператор SQL. два запроса ларка делает в связях. объединение таблицу в одну выборку и загрузка двух таблиц по связи как разные сущности это не одно и тоже. объединять таблицы удобно для агрегаций и сложных выборок, например, фильтраций и если ты хочешь загрузить посты с комментариями, это не значит, что надо джоинить таблицы post и сomments, работать с этим будет не удобно как минимум.
имхо, просто так отказываться от елки, если используешь лару - нет смысла. если использование DB оправдано - то это верное решение, как и любое другое. а если грубо, то да, орм это для удобства работы с данными бд на уровне твоего приложения. https://laraway.github.io/eloquent-vs-db/
а если не используешь лару но хочешь использовать елку?
было дело. прекрасно вписалась )))
по итогу свою лару собрал в конце?
чесн говоря хз какая там судьба постигла тот проект, наверняка к этому все и пришло
Почитал по ссылке!!! Нифига се разница!!!!! И нафига тогда эта елка нужна? Буду использовать фасад и пусть только меня попробуют упрекнуть ))
а она тебе нужна? ты постоянно выбираешь 10К записей?
да причем это тесты из разряда лара в 10000 раз медленее загружается и в пример приводят две строчки запускающие сервер на nodejs без какого либо функционала))
ну там как бы сравнивается запрос через фасад и елку. ну понятно что елка будет дольше работать, там куча абстракций у модели
Обсуждают сегодня