Фильтр коллекции Laravel — получение значения фильтра

#laravel #filter #collections #eloquent

#laravel #Фильтр #Коллекции #красноречивый

Вопрос:

У меня есть этот фильтр коллекции в шаблоне блейда, и я хочу показывать только поле значения. На самом деле, я получаю отфильтрованный массив обратно.

 {{ $room->products->filter( function($value, $key){ if( $value['product_id'] == 71 ){ return $value['value']; } }) }}
  

вывод:

 [{"id":10,"product_id":71,"room_id":2,"value":"3896"}]
  

я только хочу показать поле значения

Ответ №1:

Вы могли бы использовать pluck метод, подобный этому:

 $room->products
     ->filter( function($value, $key) { 
          return $value['product_id'] == 71
     })
     ->pluck('value');
  

и затем вы можете использовать first метод для получения только первого значения:

 $room->products
     ->filter( function($value, $key) { 
          return $value['product_id'] == 71
     })
     ->pluck('value')
     ->first();
  

Однако в вашем случае, если вам всегда будет нужен только один результат от фильтра, вы могли бы использовать firstWhere метод. Например, вы могли бы сделать:

 {{ $room->products->firstWhere('product_id', 71)['value'] }}