Как получить предмет из красноречивой коллекции laravel по условиям? - PullRequest
0 голосов
/ 11 октября 2019

Я использую laravel eloquent , чтобы получить файлы почты, которые дают мне коллекцию, но я хочу элемент из этой коллекции по условию . Например, из этой коллекции я хочу элемент, который type = 'product'.

Я использую foreach, проверяю каждый элемент, у которого есть мое состояние, и возвращаю его, но разве нет лучшего способа?

Я проверил метод сбора, например, содержать, но он возвращает null.

Тип файла: filed, значение которого равно 'product' или 'blog'.

Мой код:

$post= Post::where('slug' , $slug)->first();

$cover = $post->files->contains(['type' , '=' , 'product']);

Ответы [ 2 ]

2 голосов
/ 11 октября 2019

Используйте метод сбора filter.

$cover = $post->files->filter(function($file) {
    // show only the items that match this condition
    return collect(['product', 'blog'])->contains($file->type);
});
1 голос
/ 11 октября 2019

Метод filter фильтрует коллекцию, используя заданный обратный вызов, сохраняя только те элементы, которые проходят данный тест на истинность:

$filtered = $post->files->filter(function ($value, $key) {
    return $value->type == 'product';
});

$filtered->all();

Collections - filter ()

...