【发布时间】:2016-08-03 07:40:56
【问题描述】:
我正在使用 Laravel 5.2。在我的应用程序中,如果用户是管理员,他可以看到所有组。否则,他只能看到他的组。
型号
public function groups() {
if ($this->isAdmin()) {
return \App\Group::get();
}
return $this->belongsToMany('App\Group');
}
查看
@foreach($user->groups as $group)
{{ $group->name }}
@endforeach
结果
如果用户不是管理员,上面的代码可以工作,但如果用户是管理员,我会收到此错误
Relationship 方法必须返回 Illuminate\Database\Eloquent\Relations\Relation 类型的对象
我尝试了这个:$user->groups() as $group,当用户是管理员时它可以工作,但当它不是管理员时不显示任何内容。
问题
我知道当我将关系称为属性 ($user->groups) 时,它会返回一个对象集合。相反,如果我将其作为函数调用 ($user->groups()),我会得到一个 QueryBuilder 实例。
如何使用与我的观点相同的语法?
注意:我不能将数据库中的所有组都添加到管理员中,因为管理员必须没有组。
【问题讨论】:
标签: php laravel laravel-5 eloquent laravel-5.2