【问题标题】:Using a where condition in multtiple relation eager load in laravel在 laravel 中的多关系急切加载中使用 where 条件
【发布时间】:2015-04-09 17:34:25
【问题描述】:

我有三个模型

用户创建了一个会议,其他成员被邀请参加该会议

我需要获取会议,其中包含为受邀参加该会议的用户创建会议的用户的详细信息

所以我有一张会议桌

模型会议

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 具有特定值的会议,但在哪里向用户表添加查询。我似乎无法在关系负载中添加位置。我怎样才能做到这一点?

【问题讨论】:

  • 我仍然找不到这个问题的答案。我正在使用联接编写自定义查询。等待回复。

标签: php laravel-4 eloquent


【解决方案1】:

你应该可以更轻松地做到这一点

$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 关系:Eloquent Nested Relation with Some Constraint

【讨论】:

  • 查询末尾的 where 似乎将查询添加到被邀请的会议中,这实际上是一个邀请表。我不要那个。我实际上想添加会议桌的位置
  • 你试过->where('meeting.status', '=', 'something')
【解决方案2】:

我已经找到了答案,所以

$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();

这解决了我的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2014-06-12
    • 2017-11-26
    • 1970-01-01
    • 2016-06-06
    • 2017-05-31
    • 1970-01-01
    相关资源
    最近更新 更多