Конвертировать 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);

Я думаю, что это то, что вы хотите. Попробуйте.

Другие вопросы по тегам