如何在Laravel上使用类似查询的位置过滤集合?

时间:2019-07-09 20:26:51

标签: php arrays laravel laravel-5 laravel-collection

我有以下数组:

$elements = collect([
     ['product_id' => 'prod-100', 'name' => 'Desk'],
     ['product_id' => 'prod-200', 'name' => 'Chair'],
 ]);

我需要按近似值进行过滤,但仅使用收集数据,例如:

$elements->where('name', 'LIKE', 'De%')->values()->all();

实际上,我可以过滤数据,但是使用常规过滤器(在其中),这对我不起作用,因为它会找到确切的巧合。因此,如果我使用普通过滤器,则必须说出要匹配的确切值:

$elements->where('name', 'Desk');

我如何使用“ Where LIKE”子句对数组数据进行查询?

1 个答案:

答案 0 :(得分:1)

您可以在集合中使用filter函数,并在关闭时使用preg_match php函数检查其是否存在于name参数中,如下所示:

$name='de';
$elements->filter(function ($item) use($name){
    return preg_match("/$name/",$item['name']);
});