我有三个模特
用户创建了一个会议,其他成员被邀请参加该会议
我需要召开会议,了解为受邀参加会议的用户创建会议的用户的详细信息
所以我有一张会议桌
模型会议
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
具有特定值的会议,但是在哪里向用户表添加查询。我似乎无法在关系加载中添加一个位置。我怎样才能做到这一点?
答案 0 :(得分:0)
你应该可以更容易地做到这一点
$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()
看看这里是为了更好地理解嵌套雄辩的关系:Eloquent Nested Relation with Some Constraint
答案 1 :(得分:0)
我已经找到了答案,所以
$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();
这解决了我的问题