将Laravel Collection非递归转换为数组

时间:2018-12-03 08:52:40

标签: laravel laravel-5 laravel-5.6 laravel-collection

我有Collection个对象。我想把它变成对象的array。不幸的是,toArray中的Collection似乎是递归应用的,因此我实际上得到了一个数组数组。

以下是显示问题的示例:

$users = User::get();
$result = $users->toArray();
dd($result);

在上面的示例中,您得到的不是数组User模型,而是数组。

很明显,当您查看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 个答案:

答案 0 :(得分:4)

$users = User::get();
$result = $users->all();
dd($result);

我想这就是你想要的。试试看。