Laravel 5雄辩多种多样的关系

时间:2015-09-13 14:57:17

标签: php laravel laravel-5.1

我有2个表:CalendarUserCalendarUser有一对多关系,UserparentID有自己的关系:

//model Calendar.php
    public function users()
    {
        return $this->belongsTo(User::class,'userID');
    }
//model User.php
    public function parent()
    {
        return $this->belongsTo(self::class,'parentID','id');
    }

我已经选择了它,但我想添加:

where('users.parent.parentID',$userID)->orWhere('users.parent.parentID',$userID);

但我认为它不会起作用。我试图加入,但我不知道如何。我试过了:

$calendar = calendar::with('users','users.parent')->get()->where('users.parent.parentID',$userID);

$calendar = calendar::with('users','users.parent')->get()->where('users.parentID',$userID);

1 个答案:

答案 0 :(得分:1)

Calendar::with('users')
        ->whereHas('users', function($query) use ($userID) {
        $query->where('parentID', $userID)->orWhereHas('parent', function($query) use ($userID) {
            $query->where('parentID', $userID);
        });
    })->get();

这将加载所有父ID等于$ userID的用户或父父具有相同条件的用户。对于加载关系,您必须使用with函数来过滤关系中的回调使用回调,以过滤关系所有者使用函数whereHasorWhereHas