Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день.
Есть модель в которой хочу закешировать relationship
class ShopCategory extends Model
{
public function descriptions()
{
return $this->hasMany(ShopCategoryDescription::class, 'category_id', 'id');
}
public function childs()
{
return $this->hasMany(ShopCategory::class, 'parent_id', 'id');
}
}
Пытаюсь методы закешировать
class ShopCategory extends Model
{
public function childs()
{
return Cache::remember('childs_' . $this->id, 60, function()
{
return $this->hasMany(ShopCategory::class, 'parent_id', 'id')->get();
});
}
}
Получаю ошибку что данные свойства $category->childs не relationship
Не в сети
childs ))) мн. число от child это children
конечно этот метод не может работать. то что ты пытаешься кешировать, это не набор строк, а некое правило eloquent, которое он использует внутри себя для формирования запросов.
кешировать ты можешь результат запроса. у тебя где-то есть обращение к $category->childs , без скобочек, как если бы это было свойство, а не метод. это коллекция записей - вот это значение и кешируй если надо!
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Страницы 1