Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 08.08.2024 20:44:40

Кеширование категорий с relationship

Добрый день.
Есть модель в которой хочу закешировать 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

Не в сети

#2 12.08.2024 16:06:20

Re: Кеширование категорий с relationship

childs ))) мн. число от child это children

конечно этот метод не может работать. то что ты пытаешься кешировать, это не набор строк, а некое правило eloquent, которое он использует внутри себя для формирования запросов.

кешировать ты можешь результат запроса. у тебя где-то есть обращение к $category->childs , без скобочек, как если бы это было свойство, а не метод. это коллекция записей - вот это значение и кешируй если надо!


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела