非递归地将Laravel集合转换为数组

Convert Laravel Collection to an array non-recursively

我有 Collection 个对象。我想将其转换为 array 个对象。不幸的是 Collection 中的 toArray 似乎递归应用,因此我实际上得到了一个数组数组。

这是一个显示问题的例子:

$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 。请注意,我完全了解不好的解决方法,例如重新水合我的模型。

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

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