Лучшие практики Laravel для метода with ()

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

Так будет и этот звонок:

$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()?

разве эти два примера with() не совсем разные?

Thijs Steel 24.06.2018 13:18

@ThijsSteel One использует with как часть построителя запросов, а тот - через представление, но оба y приносят одинаковые результаты, экземпляр отношения модели, отсюда и мой вопрос. Пожалуйста, дайте более подробный ответ и будьте внимательны, спасибо.

erezt 24.06.2018 13:29

они оба работают?

Thijs Steel 24.06.2018 13:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
3
293
1

Ответы 1

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

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

Итак, вы говорите, что "второй пример", возвращающий красноречивое представление with(), замедляет загрузку представления? Пожалуйста, будьте точны и объясните, как, поскольку это моя главная забота, спасибо.

erezt 24.06.2018 13:42

я говорю, что второй пример делает нечто совершенно иное. Вы должны попробовать это без with(), он будет работать

Thijs Steel 24.06.2018 13:45

with() из первого примера делает это быстрее

Thijs Steel 24.06.2018 13:45

Разве это не называется нетерпеливой загрузкой (до чего угодно)? Т.е. не ленивая загрузка (постить что угодно)

ggdx 24.06.2018 13:48

ленивая загрузка - причина, по которой он работает даже без активной загрузки

Thijs Steel 24.06.2018 13:49

Спасибо за ответ, подожду других ответов на всякий случай, подождите неделю, если вас устраивает.

erezt 24.06.2018 14:16

Другие вопросы по теме