Laravel очень краткосрочный кеш? - PullRequest
1 голос
/ 25 марта 2020

В режиме просмотра Laravel, такие шаблоны:

@foreach($events as $event)
  <p>{{ $event->user->name }}</p>
@endforeach

приводит к SQL запросам при просмотре страницы:

select * from `event_logs`
select * from `users` where `users`.`id` = 1 limit 1
select * from `users` where `users`.`id` = 1 limit 1
select * from `users` where `users`.`id` = 1 limit 1
select * from `users` where `users`.`id` = 1 limit 1
select * from `users` where `users`.`id` = 1 limit 1
select * from `users` where `users`.`id` = 1 limit 1
select * from `users` where `users`.`id` = 1 limit 1
select * from `users` where `users`.`id` = 1 limit 1
select * from `users` where `users`.`id` = 1 limit 1

Есть ли способ сказать ему, чтобы он запомнил результат этого пользовательского запроса только за один запрос страницы ?

, т.е. ни один из среднесрочных или долгосрочных модулей кэширования, которые требуют, чтобы вы отслеживали когда данные изменились.

1 Ответ

3 голосов
/ 25 марта 2020

Вы можете попробовать выбрать данные с активной загрузкой, используя «with» в своем запросе, чтобы получить данные одновременно с извлечением данных для родительской таблицы.

Например;

$books = App\Book::with('author')->get();
...