Функция collect
Функция collect создаёт новый экземпляр класса Collection
из переданных данных. В качестве аргумента может принимать
массив, объект, итерируемую структуру или null.
Если аргумент не передан, создаётся пустая коллекция.
Функция особенно полезна для работы с массивами данных
с использованием мощного API коллекций Laravel.
Синтаксис
<?php
collect($items);
?>
Пример
Давайте создадим коллекцию из массива чисел и применим метод sum:
<?php
use Illuminate\Support\Collection;
$res = collect([1, 2, 3, 4, 5])->sum();
echo $res;
?>
Результат выполнения кода:
"15"
Пример
Создадим коллекцию из массива строк и отфильтруем элементы:
<?php
use Illuminate\Support\Collection;
$res = collect(['a', 'b', 'c', 'd', 'e'])->filter(function ($item) {
return $item > 'b';
});
print_r($res->toArray());
?>
Результат выполнения кода:
["c", "d", "e"]
Пример
Функция может создавать коллекцию из объекта:
<?php
use Illuminate\Support\Collection;
$obj = new stdClass();
$obj->name = 'article';
$obj->status = 'published';
$res = collect($obj);
print_r($res->toArray());
?>
Результат выполнения кода:
["name" => "article", "status" => "published"]
Пример
Создадим пустую коллекцию и добавим элементы:
<?php
use Illuminate\Support\Collection;
$res = collect();
$res->push('a');
$res->push('b');
$res->push('c');
print_r($res->toArray());
?>
Результат выполнения кода:
["a", "b", "c"]
Пример
Функция часто используется для работы с данными из запросов:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Collection;
use App\Models\Article;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::where('status', 'published')->get();
$res = collect($articles)->map(function ($article) {
return $article->title;
});
print_r($res->toArray());
}
}
?>
Результат выполнения кода:
["article 1", "article 2", "article 3"]
Смотрите также
-
класс
Collection,
который представляет собой обёртку для работы с массивами -
метод
make,
который создаёт новый экземпляр коллекции -
метод
empty,
который создаёт пустую коллекцию -
метод
range,
который создаёт коллекцию из диапазона чисел