【问题标题】:Why is Eloquent returning a different result if retrieving All and using a where clause?如果检索 All 并使用 where 子句,为什么 Eloquent 会返回不同的结果?
【发布时间】:2018-07-21 21:54:53
【问题描述】:

当我使用以下检索时:

$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 响应发回,但我很好奇为什么结果会有所不同。

【问题讨论】:

    标签: json laravel eloquent


    【解决方案1】:

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

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

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

    【讨论】:

    • 这很奇怪,因为我将它用于 GET 请求,并且第一个选项是返回数组,就像第二个选项一样。然后它在最近的“作曲家更新”后不知何故坏了(这个项目的 laravel 版本一直是 5.4.*)。不过你说的有道理。
    • @MahdiYounesi 我从不反对高质量的答案,如果它们很好,我什至会支持并发答案。但我将永远反对偷窃。当你学会如何在不偷窃的情况下做出好的回答,你会没事的。如果没有,该帐户可以被禁止。你不是这里第一个试图通过做坏事来赚取积分的人。
    • @Jk33 我建议你忘记第一种方法,除非你想从数据库中获取所有记录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 2012-06-28
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多