Как я могу отфильтровать коллекцию с помощью запроса where as на Laravel? - PullRequest
1 голос
/ 09 июля 2019

У меня есть следующий массив:

$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 Ответ

1 голос
/ 09 июля 2019

Вы можете использовать функцию filter в коллекции и при закрытии. Используйте preg_match функцию php, чтобы проверить, существует ли она в параметре имени, например:

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