Laravel 5.6使用雄辩的ORM将所有行作为值的数组获取

时间:2018-07-26 15:36:43

标签: php mysql laravel eloquent

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

$items = Item::get(['id', 'name']);

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

[
    {id: 1, name: "some name"},
    {id: 2, name: "some other name"}
]

我想要这样的结果:

[
    [1, "some name"],
    [2, "some other name"]
]

如何使用Laravel 5.6和精通的ORM实现这一目标?

3 个答案:

答案 0 :(得分:3)

您可以使用toArray方法

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

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

Illuminate\Support\Collection {
     all: [
       [
        1,
        "Peter",
       ],
       [
         2,
         "Juan",
       ],
   ];

和json表示形式:

[[1, "Peter"], [2, "Juan"]]

答案 1 :(得分:0)

使用pluck方法来实现

$items = \App\Item::pluck('name', 'id');

答案 2 :(得分:0)

我遇到有关内部toArray()的错误,因此这对我有用:

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