В моей модели Article
я стремлюсь загрузить отношения категорий в модели:
protected $with = array('category');
Когда я получаю свои статьи в контроллере, я кэширую результаты как своих статей, так и отношений, которые я хочу загрузить туда:
$articles = Article::with([
'owner' => function ($q) {$q->remember(10);},
'tags' => function ($q) {$q->remember(10);},
'thumbnail' => function ($q) {$q->remember(10);}
])
->remember(10)->get();
Но; article.category
не кэшируется. Я думал, что он будет закэширован вместе с моделью Article
, так как он с нетерпением загружается в эту модель. Но этого не происходит.
Однако он кэшируется, если я хочу загрузить (с кешем) в контроллер, добавив это в свой Article::with
:
'category' => function ($q) {$q->remember(10);}
Я знаю, что могу remember()
сами отношения:
public function category()
{
return $this->belongsTo('Category', 'category_id')->remember(10);
}
Но тогда он всегда будет кешироваться, я хотел бы определить, будет ли он кешироваться в контроллере и как долго. Поскольку значения могут меняться в зависимости от использования.
Это возможно? Или кэширование должно быть определено в модели, так как там происходит активная загрузка?
with('category' => ...
в своем контроллере. - person Jarek Tkaczyk   schedule 08.10.2014