Первый пример
$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()
, как в первом примере, вы все равно можете использовать отношения, но разница в том, что отношение запрашивается только при обращении к нему, то есть выполняется несколько запросов (обычно медленнее).