2
爲什麼我會得到多個結果呢?我只想要給定客戶端ID的「聯繫人」。不適合所有客戶。Laravel急切加載問題findOrFail()
public function edit($id)
{
$client = Client::findOrFail($id)->with('contacts')->get();
}
感謝,
爲什麼我會得到多個結果呢?我只想要給定客戶端ID的「聯繫人」。不適合所有客戶。Laravel急切加載問題findOrFail()
public function edit($id)
{
$client = Client::findOrFail($id)->with('contacts')->get();
}
感謝,
基本上,findOrFail()
發現一個結果給你,而不是返回集合。這意味着它已經爲您撥打了get()
電話。所以你不能再添加另一個get()
。如果你這樣做,你會發現奇怪的結果,因爲你基本上正在建立一個新的查詢。
這也意味着你不需要加載任何東西。渴望加載的原因很好,因爲它允許您在單個查詢中爲多個對象提取數據。但是,無論如何,你只有一個對象 - 所以它並不重要。
稍後,當您需要聯繫人時,您可以輕鬆完成$client = Client::findOrFail($id);
然後$client->contacts
。它不會讓你的表現更糟糕。
如果你只想要接觸,而不是客戶端,你可以很容易地做到這一點:$client = Client::findOrFail($id)->contacts;
很真實,我bascly問同樣的問題前一段時間,findorfail將eagerload不使用 - >使用(至少在我的情況)無論如何,我的事情可能是這樣的工作Client :: with('contacts') - > findOrFail($ id); –
謝謝,我如何訪問blade.view內的「聯繫人」? '{{Form :: model($ client,... {!! Form :: text('contact-> name',null,array('class'=>'form-control'))!!} ' – fabian
If你有多個聯繫人,只需做一個'@foreach($ client-> contacts as $ contact)'並從那裏開始。 –