Конвертировать Laravel Collection в массив не рекурсивно
У меня есть Collection
объектов. Я хочу превратить это в array
объектов. К сожалению toArray
в Collection
кажется, применяется рекурсивно, и, таким образом, я на самом деле получаю массив массивов.
Вот пример, показывающий проблему:
$users = User::get();
$result = $users->toArray();
dd($result);
В приведенном выше примере вместо получения массива пользовательских моделей вы получаете массив массивов.
Понятно, почему эта проблема возникает, когда вы смотрите на исходный код Laravel:
// Illuminate\Support\Collection.php
public function toArray()
{
return array_map(function ($value) {
return $value instanceof Arrayable ? $value->toArray() : $value;
}, $this->items);
}
Обратите внимание, я все еще хочу $users
быть Collection
в качестве примера просто MCVE. Я просто не хочу toArray
применяется рекурсивно. Обратите внимание, что я полностью осознаю плохие обходные пути, такие как повторное увлажнение моих моделей.
1 ответ
Решение
$users = User::get();
$result = $users->all();
dd($result);
Я думаю, что это то, что вы хотите. Попробуйте.