Короткий и простой вопрос. Работы ниже:
function something() {
$this->load(['descriptions.expenses' => function ($q) use (&$transactions) {
$transactions = $q->where('date', '>=', $this->user->startDate())->get();
}]);
return $transactions;
}
Возвращает все расходы, как ожидалось. Когда я кеширую это, вот так:
function something() {
return cache()->rememberForever('budget_expenses_' . auth()->user()->id, function () {
$this->load(['descriptions.expenses' => function ($q) use (&$transactions) {
$transactions = $q->where('date', '>=', $this->user->startDate())->get();
}]);
return $transactions;
});
}
Он сразу ничего не возвращает. Мне просто любопытно, почему это происходит. Причина кеширования в том, что он генерирует много запросов, очевидно.
Следующее также работает как ожидалось:
function something() {
return cache()->rememberForever('something_' . auth()->user()->id, function () {
return auth()->user()->budgets()->get();
});
}
Проблема в том, что return $transactions;
это, похоже, не кэшируется, поэтому вызов кешированного ключа позже просто вернет null
.