Php 如何通过like筛选laravel中的集合
我想按名称筛选集合,如laravel中的“%something%”,但在集合中like不起作用 我如何解决这个问题? 我编写了这个方法,但不适用于名称过滤器Php 如何通过like筛选laravel中的集合,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我想按名称筛选集合,如laravel中的“%something%”,但在集合中like不起作用 我如何解决这个问题? 我编写了这个方法,但不适用于名称过滤器 protected function filterData(Collection $collection, $transformer) { foreach (request()->query() as $query => $value) { $attribute = $transformer::origi
protected function filterData(Collection $collection, $transformer)
{
foreach (request()->query() as $query => $value) {
$attribute = $transformer::originalAttribute($query);
if (isset($attribute, $value)) {
if ($attribute == 'name') {
$collection = $collection->where($attribute,'LIKE' ,"%$value%"); // problem is here
}
$collection = $collection->where($attribute, $value);
}
}
return $collection;
}
换成这个
$collection=$collection->where($attribute,'LIKE',“%.”$value.“%”);//问题就在这里您可以像这样过滤您的收藏:
$collection = $collection->filter(function ($item) use ($attribute) {
return strpos($item->name, $attribute) !== false;
});
如果您在尝试获取非对象的属性“name”时遇到错误,请将$item->name
更改为$item['name']
类似的内容?