#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'] }}