Я просмотрел документацию laravel, я не получил разницу между With или Load в запросах. В каком состоянии нам нужно использовать With или Load? Опишите это
Model::find(1)->with('firstModel','SecondModel'); Model::find(1)->load('firstModel','SecondModel');
Model::find(1)->with('firstModel','SecondModel');
На самом деле ничего не делается, так как теперь новый конструктор не связан с моделью, возвращенной из find(1)
.
Model::with(....)->find(1);
Было бы интересно загружать отношения.
Model::find(1)->load(...);
Ленькая нетерпеливая загрузка. Он загружает отношения к существующему экземпляру модели, который вы уже получили. (поскольку find(1)
возвращает экземпляр модели, а load
сообщает ему, чтобы затем загрузить указанные отношения). load
также может использоваться в Collections для загрузки отношений во всех экземплярах модели. load
более полезна при работе с набором моделей по сравнению с одним из них, просто используя динамическое свойство (ленивая загрузка, если она еще не загружена) для отношений на модели приведет к запуску одних и тех же запросов. На множестве он удаляет любую проблему N + 1 во время итерации через них.
Вы можете проверить эту статью за дополнительной информацией об этом.
asklagbox – блог – Красноречивые отношения с запросами
with()
нагрузками с родительской моделью одновременно.
load()
когда вам нужна Lazy Eager Loading . Например, это может быть полезно, если вам необходимо динамически решить, следует ли загружать связанные модели:
$books = App\Book::all(); if ($someCondition) { $books->load('author', 'publisher'); }
Если вам нужно установить дополнительные ограничения запросов в запросе загружаемой загрузки, вы можете передать метод Closure для загрузки:
$books->load(['author' => function ($query) { $query->orderBy('published_date', 'asc'); }]);
В оболочке ореха with()
нагружает связь с родительской моделью. Это полная загрузка.
Если вы не хотите загружать эти данные, вы можете использовать ленивую нагрузку или нетерпеливую ленивую нагрузку. В этом случае данные будут загружены, когда вы начнете использовать отношения. Таким образом, во время выполнения вы можете решить, какое именно отношение вы хотите загрузить, или, может быть, вы не захотите загружать какие-либо данные о взаимоотношениях вообще и т. Д.