我在定制关系方面遇到了一些麻烦。
我希望$user->sites
返回$user
有权访问的每个网站。它是belongsToMany关系,具有数据透视表'user_site'。问题是,当$user
是管理员时,他可以访问数据库中的每个站点,而我无法让它与Eloquent合作。
public function sites() {
if( $this->is_super_user )
return Site::whereNotNull('deleted_at');
return $this->belongsToMany('Site', 'user_site');
}
这是我得到的,但它不起作用(关系方法必须返回Illuminate\Database\Eloquent\Relations\Relation
类型的对象。)
我可以返回Site::all()
和$this->belongsToMany('Site', 'user_site)->get()
,但我希望能够使用动态属性($user->sites
)并过滤结果($user->sites()->where...
)< / p>
我错过了什么吗?