簡體   English   中英

在laravel中使用多個關系中的where條件

[英]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');
}

最后加載關系的代碼。 其中$userUser 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM