我的多对多关系返回数据存在问题。我有3个表来定义此关系users
,institutes
和数据透视表users_institutes
。我users_institutes
中的数据位于图片中。
我的关系由以下代码定义。
public function super_user_institutes()
{
return $this->belongsToMany('App\Institute', 'users_institutes')
->wherePivot('role', 'inst_superuser')
->orWherePivot('role', 'inst_admin')
->orWherePivot('role', 'inst_staff')
->withPivot('role');
}
现在,对于我正在尝试获取关系的用户具有id 2.所以,现在如果我使用
$user->super_user_institutes;
我得到以下行作为回应:1,2,3,9,10,11,12(7行)。
我期望以下行:1,2,3。
我期待错误的结果吗?或者我的关系定义错了?
答案 0 :(得分:0)
尝试这么多代码
public function super_user_institutes()
{
return $this->belongsToMany('App\Institute', 'users_institutes');
}
答案 1 :(得分:0)
当我写下对我以前所做的事情的否定时,它运作正常。奇怪,但我不明白为什么它现在有用,为什么它以前不起作用。
而不是::
public function super_user_institutes()
{
return $this->belongsToMany('App\Institute', 'users_institutes')
->wherePivot('role', 'inst_superuser')
->orWherePivot('role', 'inst_admin')
->orWherePivot('role', 'inst_staff')
->withPivot('role');
}
我写了::
public function super_user_institutes()
{
return $this->belongsToMany('App\Institute', 'users_institutes')
->wherePivot('role', '<>', 'inst_student')
->withPivot('role');
}
这回归了我所期待的。