非递归地将 Laravel Collection 转换为数组

Yah*_*din 1 laravel laravel-5 laravel-collection laravel-5.6

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

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

$users = User::get();
$result = $users->toArray();
dd($result);
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,你得到的是一个数组数组,而不是一个 User 模型数组。

当你查看 Laravel 的源代码时,很清楚为什么会出现这个问题:

// Illuminate\Support\Collection.php

public function toArray()
{
    return array_map(function ($value) {
        return $value instanceof Arrayable ? $value->toArray() : $value;
    }, $this->items);
}
Run Code Online (Sandbox Code Playgroud)

请注意我仍然想$users成为一个Collection,因为这个例子只是一个MCVE。我只是不想toArray被递归应用。请注意,我完全了解不好的解决方法,例如重新给我的模型补水。

Ali*_*zen 5

$users = User::get();
$result = $users->all();
dd($result);
Run Code Online (Sandbox Code Playgroud)

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