【发布时间】:2014-10-21 07:33:27
【问题描述】:
我有以下 Laravel 模型:
class User extends ConfideUser implements UserInterface, RemindableInterface
{
use HasRole;
public function stores()
{
if ($this->hasRole('root')) {
return $this->belongsToMany('Store')->orWhereNull('store_user.user_id');
} else {
return $this->belongsToMany('Store');
}
}
}
每个user 都属于许多stores,并且这种关系是通过标准数据透视表'store_user' 创建的。
如果我执行以下操作,我会为用户获取所有商店:
$stores = Auth::user()->stores;
但是,如果该用户具有root 角色,我想检索所有商店。这很简单,可以使用简单的选择返回所有商店,但是为了使 stores() 方法能够始终如一地运行,Laravel 期望它返回 Illuminate\Database\Eloquent\Relations\Relation 类型的对象。
如何返回 Relation 对象,其中选择了所有商店,而不仅仅是 root 用户在 store_user 数据透视表中拥有的商店?
【问题讨论】:
标签: php laravel laravel-4 eloquent