0
目前,當我取回「消息」,它呈現n+1
問題:防止雄辯查詢n + 1個
select * from `messages` where `messages`.`alert_id` = '21'
這有時會被複制超過100 +倍!
控制器功能:
public function getIndex() {
$alerts = Alert::with('location')
->where('user_id', '=', Auth::user()->id)
->get();
$this->layout->content = View::make('agents.index',
array('alerts' => $alerts));
}
警報型號:
public function location()
{
return $this->belongsTo('Location');
}
public function messages()
{
return $this->hasMany('Message');
}
消息模型:
public function alert()
{
return $this->belongsTo('Alert');
}
public function user()
{
return $this->belongsTo('User');
}
如果我使用下面的代碼行,我可以看到MySQL是正確,但它不能找到location
方法:
$alerts = Alert::with('messages.location')
SELECT * FROM
messages
其中messages
。 ('21','42')alert_id
我認爲這可能是一個關係問題,但我不確定如何解決它。任何幫助將非常感激。
它完美的作品。謝謝@Antoine! – Ben
@Svengali樂於幫忙! –
'$ company = User :: find(Auth :: user() - > id) - > companies() - > with('users.alerts.location.messages') - > first();'是否有原因爲什麼這不起作用@Antoine Augusti?它無法找到'messages'方法? – Ben