为什么firstOrFail会更改此查询的结果?

时间:2017-07-31 18:30:04

标签: laravel collections eloquent

为什么firstOrFail()导致此雄辩查询的结果发生变化?

>>> Organization::find('300048');
=> Models\Organization {#889
     id: 300048,
     token: "redacted",
     name: "DAYJK4EGPE",
     domain: null,
     created_at: "2017-05-19 17:42:55",
     updated_at: "2017-05-19 17:42:56",
     stripe_customer_id: "redacted",
     referral_snippet: null,
     primary_business: null,
   }
>>> Organization::find('300048')->firstOrFail();
=> Models\Organization {#897
     id: 300033,
     token: "redacted",
     name: "123456",
     domain: "google.com",
     created_at: "2017-05-17 13:24:23",
     updated_at: "2017-05-24 15:50:25",
     stripe_customer_id: "redacted",
     referral_snippet: null,
     primary_business: null,
   }
>>>

标识为300033的模型是我数据库中的第一个模型,但我预计它仍会返回标识为300048的组织,因为这是集合firstOrFail()中的唯一结果正在被召唤。

2 个答案:

答案 0 :(得分:2)

您应该使用Organization::findOrFail('300048');

有关抛出异常的详细信息,请参阅Laravel docs

答案 1 :(得分:2)

你自己已经弄清楚了,但是当你使用firstOrFail时,where基本上会抓住第一条记录,如果你不使用where条款,它会只需获取数据库中的第一条记录。

正如您所知,您需要findOrFail才能找到具有该ID的第一条记录,或者失败。