我在laravel 5.2中使用这个package,当使用从控制器发送不同的结果来查看时,我得到了不同的行为:
当我这样做一个查询时:
$users = User::all();
然后在我看来,我可以检查这样的用户角色:
@if($user->is('admin'))
这是预期的行为,但是当我从这样的查询发送结果时:
$users = User::leftjoin('role_user', 'users.id', '=', 'role_user.user_id')
->orderBy(DB::raw('role_id IS NULL'))
->groupBy('users.id')
->orderBy('role_id')
->get();
我不能像我应该做的那样检查,但我需要像这样检查:
@if($user->role_id ==1)
答案 0 :(得分:1)
在查询联接时添加select主表是很好的:
$users = User::leftjoin('role_user', 'users.id', '=', 'role_user.user_id')
->select('users.*')
->orderBy(DB::raw('role_id IS NULL'))
->groupBy('users.id')
->orderBy('role_id')
->get();
然后在你看来:
@foreach($users as $user)
@if($user->is('admin'))
(...)
@endif
@endforeach
如果这样做无效,那么您必须检查item
的类型。可能其他一些捆绑包会破坏查询模型并返回stdClass
而不是User
模型。