为什么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()
中的唯一结果正在被召唤。
答案 0 :(得分:2)
您应该使用Organization::findOrFail('300048');
。
有关抛出异常的详细信息,请参阅Laravel docs。
答案 1 :(得分:2)
你自己已经弄清楚了,但是当你使用firstOrFail
时,where
基本上会抓住第一条记录,如果你不使用where
条款,它会只需获取数据库中的第一条记录。
正如您所知,您需要findOrFail
才能找到具有该ID的第一条记录,或者失败。