[英]Using a where condition in multtiple relation eager load in laravel
我有三個型號
用戶創建了會議,並邀請其他成員參加該會議
我需要召開會議,其中包含為受邀參加該會議的用戶創建會議的用戶的詳細信息
所以我有一張會議桌
模型會議
function creator() {
return $this->belongsTo( 'User', 'created_by' );
}
function attendees() {
return $this->hasMany('MeetingAttendees');
}
模型用戶
function invitedMeetings() {
return $this->hasMany( 'MeetingAttendees' );
}
模特會議參加者
function meeting() {
return $this->belongsTo('Meeting');
}
最后加載關系的代碼。 其中$user
是User Object
$user->invitedMeetings()
->with(['meeting.creator' => function ($query) use ($status) {
if (!empty($status)) {
$query->where('meetings.status', '=', $status);
}
}])->get();
我只需要獲得$status
具有特定值的會議,但是在哪里向用戶表添加查詢。 我似乎無法在關系加載中添加一個位置。 我怎樣才能做到這一點?
你應該能夠更容易地做到這一點
$user->invitedMeetings()
->with(['meeting', 'meeting.creator'])
->where('status', '=', 'accepted')
->get()
//If you want to do a check on another table
$user->invitedMeetings()
->with(['meeting', 'meeting.creator'])
->where('meeting.status', '=', 'accepted')
->get()
看看這里是為了更好地理解嵌套雄辯的關系: 雄辯的嵌套關系與一些約束
我已經找到了答案,所以
$user->invitedMeetings()
->with(['meeting.creator' => function ($query) use ($status) {
if (!empty($status)) {
$query->where('meetings.status', '=', $status);
}
}])->get();
應改為
$user->invitedMeetings()
->with(['meeting' => function ($query) use ($status) {
$query->where('meetings.status', '=', $status)->with('creator');
}])->get();
這解決了我的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.