Запрос Laravel по пользовательскому атрибуту

#php #laravel #laravel-5 #laravel-5.8

#php #laravel #laravel-5 #laravel-5.8

Вопрос:

У меня есть вопрос, касающийся запроса модели eloquent с использованием пользовательского атрибута.

У меня есть класс / модель Item , и я создал атрибут:

   function getWeeklySalesCountAttribute()
  {
     return rand(3, 1000); //real logic is in db
  }
  

Итак, в моем контроллере я хочу сначала выбрать товары с самыми высокими еженедельными продажами и разбить их на страницы

     $items = Item::where(function($item){
        //find the items with highest weekly sales
    })->paginate(10); 
  

Как мне добиться этого, учитывая, что мне удается извлечь $item->weekly_sales_count атрибут

Комментарии:

1. Хотя я не уверен. но пока я думаю, является ли класс ‘item’ вашим классом eloquent или обычными классами?

2. Это класс Eloquent (модель)

Ответ №1:

Вы не можете использовать Eloquent, вам нужно использовать фильтр.

  $result = Model::get()->filter(function($item) {
    return $item->weekly_sales_count > 3;
 });
  

Комментарии:

1. спасибо, позвольте мне попробовать, но задача состоит в том, чтобы отфильтровать те, у которых самые высокие продажи, и разбить их на страницы, так каков правильный способ использования фильтра. Если вы можете связать меня с тем, где filter объясняется, я буду очень рад