我正在根据用户角色限制访问。
如果user-> isAdmin()返回true,我希望能够以某种方式覆盖belongsToMany关系以返回all。
目前拥有AccountController索引方法:
public function index()
{
if(Auth::user()->isAdmin()) // can this go in beforeFilter?
return Account::all();
else
return Auth::user()->accounts;
}
在我的用户模型中:
public function accounts()
{
return $this->belongsToMany("Account");
}
是否有一种巧妙的方法可以在控制器功能中不需要if语句?
答案 0 :(得分:1)
关系方法必须返回Relation
,otherwise it throws an error。
没有什么可以阻止你为此创建一个单独的方法:
<强> AccountController.php 强>:
public function index()
{
return Auth::user()->userAccounts();
}
<强> user.php的强>:
public function accounts()
{
return $this->belongsToMany("Account");
}
public function userAccounts()
{
if ($this->isAdmin()) return Account::all();
return $this->accounts;
}