Метод toArray
Метод toArray применяется к коллекциям и Eloquent моделям и возвращает их представление в виде обычного PHP-массива. Для Eloquent моделей метод также рекурсивно преобразует связанные отношения и скрывает атрибуты, защищённые свойством $hidden, а также включает только атрибуты из $visible. Метод не принимает параметров и всегда возвращает массив.
Синтаксис
<?php
$res = $collection->toArray();
?>
Пример
Давайте преобразуем коллекцию чисел в массив:
<?php
use IlluminateSupportCollection;
$collection = collect([1, 2, 3, 4, 5]);
$res = $collection->toArray();
print_r($res);
?>
Результат выполнения кода:
[
0 => 1,
1 => 2,
2 => 3,
3 => 4,
4 => 5,
]
Пример
Давайте преобразуем коллекцию ассоциативных массивов:
<?php
use IlluminateSupportCollection;
$collection = collect([
['id' => 1, 'name' => 'Article 1'],
['id' => 2, 'name' => 'Article 2'],
['id' => 3, 'name' => 'Article 3'],
]);
$res = $collection->toArray();
print_r($res);
?>
Результат выполнения кода:
[
0 => [
'id' => 1,
'name' => 'Article 1',
],
1 => [
'id' => 2,
'name' => 'Article 2',
],
2 => [
'id' => 3,
'name' => 'Article 3',
],
]
Пример
Давайте преобразуем коллекцию Eloquent моделей в массив. Предположим, у нас есть модель Article:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class Article extends Model
{
protected $fillable = [
'title',
'body',
'status',
];
protected $hidden = [
'created_at',
'updated_at',
];
}
?>
Теперь получим статьи и преобразуем их в массив:
<?php
use AppModelsArticle;
$articles = Article::where('status', 'published')->get();
$res = $articles->toArray();
print_r($res);
?>
Результат выполнения кода:
[
0 => [
'id' => 1,
'title' => 'Article 1',
'body' => 'Text 1',
'status' => 'published',
],
1 => [
'id' => 2,
'title' => 'Article 2',
'body' => 'Text 2',
'status' => 'published',
],
2 => [
'id' => 3,
'title' => 'Article 3',
'body' => 'Text 3',
'status' => 'published',
],
]
Обратите внимание, что поля created_at и updated_at отсутствуют в результате, так как они скрыты через свойство $hidden.
Пример
Давайте преобразуем в массив одиночную Eloquent модель:
<?php
use AppModelsArticle;
$article = Article::where('id', 1)->first();
$res = $article->toArray();
print_r($res);
?>
Результат выполнения кода:
[
'id' => 1,
'title' => 'Article 1',
'body' => 'Text 1',
'status' => 'published',
]
Пример
Давайте преобразуем коллекцию после применения методов фильтрации и сортировки:
<?php
use IlluminateSupportCollection;
$collection = collect([
['name' => 'Article 1', 'views' => 100],
['name' => 'Article 2', 'views' => 50],
['name' => 'Article 3', 'views' => 200],
]);
$res = $collection
->where('views', '>', 50)
->sortBy('views')
->toArray();
print_r($res);
?>
Результат выполнения кода:
[
0 => [
'name' => 'Article 1',
'views' => 100,
],
1 => [
'name' => 'Article 3',
'views' => 200,
],
]