我有2个表:Calendar
和User
。 Calendar
与User
有一对多关系,User
与parentID
有自己的关系:
//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);
答案 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
函数来过滤关系中的回调使用回调,以过滤关系所有者使用函数whereHas
或orWhereHas
。