Фильтрация коллекций — распространенная задача при работе с данными в Laravel. Он позволяет выбирать отдельные элементы из коллекции по определенным критериям. В этой статье мы рассмотрим различные методы фильтрации коллекций, доступные в Laravel, а также приведем примеры кода.
- filter()
Методfilter()— это встроенный метод, предоставляемый классом Collection в Laravel. Он перебирает каждый элемент коллекции и применяет функцию обратного вызова, чтобы определить, следует ли включать этот элемент в отфильтрованную коллекцию. Обратный вызов должен возвращатьtrueдля элементов, прошедших фильтр.
$collection = collect([1, 2, 3, 4, 5]);
$filtered = $collection->filter(function ($item) {
return $item % 2 == 0; // Filter even numbers
});
$filtered->all(); // [2, 4]
- where()
Методwhere()фильтрует коллекцию на основе условий пары ключ-значение. Он принимает ассоциативный массив или функцию обратного вызова значения ключа для сопоставления элементов коллекции.
$collection = collect([
['name' => 'John', 'age' => 25],
['name' => 'Jane', 'age' => 30],
['name' => 'Alex', 'age' => 20],
]);
$filtered = $collection->where('age', '>', 25);
$filtered->all(); // [['name' => 'Jane', 'age' => 30]]
- whereStrict()
МетодwhereStrict()похож наwhere(), но он выполняет строгое сравнение (===) вместо свободного сравнения. (==).
$collection = collect([
['name' => 'John', 'age' => '25'],
['name' => 'Jane', 'age' => 30],
['name' => 'Alex', 'age' => 20],
]);
$filtered = $collection->whereStrict('age', 25);
$filtered->all(); // [['name' => 'John', 'age' => '25']]
- whereIn()
МетодwhereIn()фильтрует коллекцию на основе массива значений. Он проверяет, существует ли указанное значение ключа в данном массиве.
$collection = collect([1, 2, 3, 4, 5]);
$filtered = $collection->whereIn('age', [2, 4]);
$filtered->all(); // [2, 4]
- reject()
Методreject()является противоположностьюfilter(). Он удаляет из коллекции элементы, соответствующие условию фильтра.
$collection = collect([1, 2, 3, 4, 5]);
$filtered = $collection->reject(function ($item) {
return $item % 2 == 0; // Remove even numbers
});
$filtered->all(); // [1, 3, 5]
Фильтрация коллекций — это мощная функция Laravel, которая позволяет извлекать определенные элементы на основе различных условий. В этой статье мы рассмотрели некоторые наиболее часто используемые методы фильтрации коллекций, в том числе filter(), where(), whereStrict(), whereIn()и reject(). Используя эти методы, вы можете эффективно манипулировать данными и извлекать их из коллекций в своих приложениях Laravel.