Лучшая практика Laravel для метода with () - PullRequest
0 голосов
/ 24 июня 2018

Я хотел бы знать, есть ли разветвления оптимальных объединений с точки зрения объединения через представление или при извлечении самой модели.

Так будет и такой вызов:

$deposit = Class::where('request_type', 1)->where('id', $id)->with(['customer', 'currencyTable', 'bankList', 'customerBank']);

Быть полностью эквивалентным с точки зрения производительности и других факторов, как это заявление о возвращении:

return view('whatever.howEver.show', compact('oneVar', 'twoVar', 'etc'))->with(['customer', 'currencyTable', 'bankList', 'customerBank']);

И если оно эквивалентно с точки зренияпроизводительность и так далее, куда вы помещаете свой with()?

1 Ответ

0 голосов
/ 24 июня 2018

Первый пример

$deposit = Class::where('request_type', 1)
->where('id', $id)->with(['customer', 'currencyTable', 'bankList', 'customerBank']);

Вы запрашиваете модель Class, и с помощью with() вы запрашиваете предварительную загрузку отношений customer, currencyTable, ..., определенныхв Class.

Второй пример

return view('whatever.howEver.show', compact('oneVar', 'twoVar', 'etc'))
->with(['customer', 'currencyTable', 'bankList', 'customerBank']);

Возвращает данное представление и дает представлению доступ к перечисленным переменным, аналогично использованию compact.Это совсем не то же самое и не запрашивает отношения к моим знаниям.

Почему они оба работают

У Laravel есть нечто, известное как ленивая загрузка.Даже если вы не используете with(), как в первом примере, вы все равно можете использовать отношения, но разница в том, что отношение запрашивается только при обращении к нему, то есть выполняется несколько запросов (обычно медленнее).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...