Есть ли способ кеширования переменных в Blade? - PullRequest
1 голос
/ 21 ноября 2019

Я передаю переменную своему представлению из моего контроллера с помощью функции compact, которая затем становится доступной в моем представлении. Однако каждый раз, когда я обращаюсь к этой переменной, Laravel делает все больше и больше обращений к базе данных.

return view('dashboard.overview', compact('aircraft', 'current_location', 'current_flight'));

Затем в моем Blade я вызываю компонент Vue, подобный этому: <badge--aircraft--financed :data-aircraft="{{ $aircraft }}"></badge--aircraft--financed>, которыйрезультаты в 10 запросах. Если я дублирую эту строку, Debugbar показывает, что я делаю 20 запросов, 10 из которых повторяются. Разве Blade не кэширует переменную $aircraft по умолчанию?

1 Ответ

2 голосов
/ 21 ноября 2019

Laravel кэширует только шаблоны блейдов, а не переменные. Вы можете кэшировать свою переменную в контроллере https://laravel.com/docs/6.x/cache#cache-usage

Также, чтобы предотвратить множество запросов, вы можете вызывать метод with() при получении моделей самолетов. https://laravel.com/docs/6.x/eloquent-relationships#eager-loading

...