如果检索All并使用where子句,为什么Eloquent会返回不同的结果?

时间:2018-02-11 17:41:30

标签: json laravel eloquent

当我使用以下检索时:

$items = Item::All()->where('user_id', '=', Auth::user()->id);

我得到(不知道'0'和'2'标识符是什么):

"items": {
        "0": {
            item1data
        },
        "2": {
            item2data
        }
    }

但是当我使用时:

$items = Item::where('user_id', '=', Auth::user()->id)->get();

我得到以下数组:

"items": [
        {
            item1data
        },
        {
            item2data
        }
    ]

第二个是我需要的,所以我可以将它作为Json响应发回,但我很好奇为什么结果不同。

1 个答案:

答案 0 :(得分:1)

在第一个示例中,您将从DB加载所有记录,然后使用where()收集方法过滤集合。顺便说一句,这是一个可怕的想法。

在第二个示例中,您只使用查询构建器where()方法获取所需的记录。

这就是格式不同的原因。你应该只使用第二种方法。