Laravel Collection Filter - 获取过滤器的值

ber*_*ter 3 collections filter laravel eloquent

我在刀片模板中有这个集合过滤器,我只想显示值字段。实际上,我得到了过滤后的数组。

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

输出:

[{"id":10,"product_id":71,"room_id":2,"value":"3896"}]
Run Code Online (Sandbox Code Playgroud)

我只想显示值字段

Del*_*lan 6

你可以使用pluck这样的方法:

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

然后您可以使用该first方法仅获取第一个值:

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

但是,就您而言,如果您总是只需要过滤器中的一个结果,则可以使用该firstWhere方法。例如,您可以这样做:

{{ $room->products->firstWhere('product_id', 71)['value'] }}
Run Code Online (Sandbox Code Playgroud)