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

Json 如果检索All并使用where子句,为什么雄辩返回不同的结果?,json,laravel,eloquent,Json,Laravel,Eloquent,当我使用以下命令时: $items = Item::All()->where('user_id', '=', Auth::user()->id); 我得到(不知道“0”和“2”标识符是什么): 但当我使用: $items = Item::where('user_id', '=', Auth::user()->id)->get(); 我得到以下数组: "items": [ { item1data },

当我使用以下命令时:

$items = Item::All()->where('user_id', '=', Auth::user()->id);
我得到(不知道“0”和“2”标识符是什么):

但当我使用:

$items = Item::where('user_id', '=', Auth::user()->id)->get();
我得到以下数组:

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

第二个是我需要的,因此我可以将其作为Json响应发送回去,但我很好奇为什么结果会不同。

在第一个示例中,您从DB加载所有记录,然后使用collection方法过滤集合。顺便说一句,这是个糟糕的主意

在第二个示例中,使用querybuilder方法只能获得所需的记录


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

这很奇怪,因为我将其用于GET请求,第一个选项是返回数组,就像第二个选项一样。在最近的一次“composer更新”之后,它不知何故崩溃了(对于这个项目,laravel版本一直是5.4.*)。但是你说的有道理。@MahdiYounesi我从来都不反对高质量的答案,如果同时给出的答案是好的,我甚至会支持。但我将永远反对偷窃。当你学会如何在不偷盗的情况下做出一个好的回答时,你就没事了。如果没有,该帐户将被禁止。你不是这里第一个试图通过做肮脏的事情来获得分数的人。@Jk33我建议你忘记第一种方法,除非你想从DB获得所有记录。
"items": [
        {
            item1data
        },
        {
            item2data
        }
    ]