为什么我会得到多个结果呢?我只想要给定客户端ID的“联系人”。不适合所有客户。
public function edit($id)
{
$client = Client::findOrFail($id)->with('contacts')->get();
}
谢谢,
答案 0 :(得分:2)
基本上,findOrFail()
会为您找到一个结果,而不是返回一个集合。这意味着它已经为你做了get()
电话。因此,您无法在此之后添加其他get()
。如果你这样做,你会发现奇怪的结果,因为你正在构建一个新的查询。
这也意味着你不需要急于加载任何东西。急切加载的原因是因为它允许您在单个查询中获取多个对象的数据。但是你在这里只有一个对象 - 所以它并不重要。
以后,当您需要联系人时,您可以轻松地执行$client = Client::findOrFail($id);
然后$client->contacts
。它不会让你的表现变得更糟。
如果您只想要联系人,而不是客户,您可以轻松地执行此操作:$client = Client::findOrFail($id)->contacts;
答案 1 :(得分:1)
尽管Joel Hinz的回答是正确的,但您仍然可以在此查询中快速加载。
只需:
$client = Client::with('contacts')->findOrFail($id);