Выбор ответа Junior Eloquent, N+1 и миграции спрашивают часто обновлено
orders() и orders
Вопрос
Чем $user->orders() отличается от $user->orders?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: orders() даёт построитель запроса, orders загруженную коллекцию. Метод связи возвращает объект HasMany, к которому можно добавить условия: $user-orders()-where("status", "paid")-get().
Варианты ответа
- Это одно и то же: свойство просто вызывает метод связи без скобок
orders()даёт построитель запроса,ordersзагруженную коллекциюправильный ответordersвсегда делает новый запрос, аorders()берёт из кешаorders()возвращает обычный массив, аordersобъект коллекции
Разбор
Метод связи возвращает объект HasMany, к которому можно добавить условия: $user->orders()->where("status", "paid")->get(). Свойство это «динамическое свойство»: при первом обращении связь загружается и кешируется в модели, повторные обращения не делают запросов. Если связь уже загружена через with, запроса нет вовсе.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.