Laravel 5.6 使用 Eloquent ORM 将所有行作为值数组

moo*_*ker 4 php mysql laravel eloquent

我有一个雄辩的查询,它返回一个集合:

$items = Item::get(['id', 'name']);
Run Code Online (Sandbox Code Playgroud)

当我转换为 JSON 时,我得到了这个:

[
    {id: 1, name: "some name"},
    {id: 2, name: "some other name"}
]
Run Code Online (Sandbox Code Playgroud)

我想要这样的结果:

[
    [1, "some name"],
    [2, "some other name"]
]
Run Code Online (Sandbox Code Playgroud)

我如何使用 Laravel 5.6 和雄辩的 ORM 实现这一目标?

小智 5

您可以使用 toArray 方法

$items = Item::get(['id', 'name'])->map(function($item) {
    return array_values($item->toArray());
});
Run Code Online (Sandbox Code Playgroud)

您的 $item 变量将具有以下内容:

Illuminate\Support\Collection {
     all: [
       [
        1,
        "Peter",
       ],
       [
         2,
         "Juan",
       ],
   ];
Run Code Online (Sandbox Code Playgroud)

和 json 表示:

[[1, "Peter"], [2, "Juan"]]
Run Code Online (Sandbox Code Playgroud)