Laravel leftJoin错误从空值创建默认对象

时间:2018-08-13 12:27:08

标签: php mysql laravel

我正在尝试使用此控制器来淘汰“超级管理员”:

$user->superadmin = DB::table('role_users AS ru')
->leftJoin('users AS u', 'u.id', '=', 'ru.user_id')
->where('role_id', '=', '5')
->select("u.*")
->get('');

和刀片:

@foreach ($user->superadmin as $superadmin)
{{ $superadmin->username }}
@endforeach

“用户” 表具有唯一的 ID 。该唯一ID与 role_users.user_id 相同。

但是我遇到了错误:

从空值创建默认对象

有帮助吗?谢谢!

3 个答案:

答案 0 :(得分:1)

$user->superadmin = ...;
  

从空值创建默认对象

您需要先将$user定义为某个对象,然后再尝试在其上设置属性(将其用作对象)。

$user = new stdClass;
$user->superadmin = ...;

我不确定您希望$user除某种对象之外还有什么类型。

答案 1 :(得分:0)

从获取方式get(' ')中删除'',它将选择一个空值

$user->superadmin = DB::table('role_users AS ru')
->leftJoin('users AS u', 'u.id', '=', 'ru.user_id')
->where('role_id', '=', '5')
->select("u.*")
->get();

要获取具有特定角色ID的用户:

User::with(['role_users'=>function($user) use($someId){
     $user->where('role_id', $someId);
}]);

答案 2 :(得分:0)

尝试一下:

$user->superadmin = DB::table('role_users')->select(['users.*'])
            ->leftjoin('users', 'users.id', '=', 'role_users.user_id')
            ->where('role_users.role_id','5')
            ->get();