Php 拉雷维尔。按用户角色、关系排序
我想按角色对用户进行排序,我希望该用户的另一个角色消失 控制器Php 拉雷维尔。按用户角色、关系排序,php,laravel,Php,Laravel,我想按角色对用户进行排序,我希望该用户的另一个角色消失 控制器 $users = User::with(['roles' => function($query) { $query->where('name','=','Admin'); }])->get(); $users = DB::table('users') ->select('users.id as Id','users.name as userName','users.email as email','
$users = User::with(['roles' => function($query) {
$query->where('name','=','Admin');
}])->get();
$users = DB::table('users')
->select('users.id as Id','users.name as userName','users.email as email','roles.name as roleName')
->join('roles','roles.user_id','=','users.id')
->where('roles.name','=','admin')
->get();
查看
@foreach($users as $user)
<tr>
<td>{{$user->id}}</td>
<td>{{$user->name}}</td>
<td>{{$user->email}}</td>
<td>
@foreach ($user->roles as $role)
{{$role->name}}
@endforeach
</td>
</tr>
@endforeach
@foreach($users as $user)
<tr>
<td>{{$user->Id}}</td>
<td>{{$user->userName}}</td>
<td>{{$user->email}}</td>
<td>{{$user->roleName}}</td>
</tr>
@endforeach
@foreach($users作为$user)
{{$user->id}
{{$user->name}
{{$user->email}
@foreach($user->roles as$role)
{{$role->name}
@endforeach
@endforeach
它不传递角色,但显示用户数据。我只需要来自管理员
角色的用户数据。我不想显示johndoe
Thx寻求帮助。您可以尝试:
$users = User::User::with('roles')->whereHas('roles', function($query) {
$query->where('name','Admin');
}])->get();
或者您可以尝试以下流畅的方式:
控制器
$users = User::with(['roles' => function($query) {
$query->where('name','=','Admin');
}])->get();
$users = DB::table('users')
->select('users.id as Id','users.name as userName','users.email as email','roles.name as roleName')
->join('roles','roles.user_id','=','users.id')
->where('roles.name','=','admin')
->get();
查看
@foreach($users as $user)
<tr>
<td>{{$user->id}}</td>
<td>{{$user->name}}</td>
<td>{{$user->email}}</td>
<td>
@foreach ($user->roles as $role)
{{$role->name}}
@endforeach
</td>
</tr>
@endforeach
@foreach($users as $user)
<tr>
<td>{{$user->Id}}</td>
<td>{{$user->userName}}</td>
<td>{{$user->email}}</td>
<td>{{$user->roleName}}</td>
</tr>
@endforeach
@foreach($users作为$user)
{{$user->Id}
{{$user->userName}
{{$user->email}
{{$user->roleName}
@endforeach
您可以尝试:
$users = User::User::with('roles')->whereHas('roles', function($query) {
$query->where('name','Admin');
}])->get();
或者您可以尝试以下流畅的方式:
控制器
$users = User::with(['roles' => function($query) {
$query->where('name','=','Admin');
}])->get();
$users = DB::table('users')
->select('users.id as Id','users.name as userName','users.email as email','roles.name as roleName')
->join('roles','roles.user_id','=','users.id')
->where('roles.name','=','admin')
->get();
查看
@foreach($users as $user)
<tr>
<td>{{$user->id}}</td>
<td>{{$user->name}}</td>
<td>{{$user->email}}</td>
<td>
@foreach ($user->roles as $role)
{{$role->name}}
@endforeach
</td>
</tr>
@endforeach
@foreach($users as $user)
<tr>
<td>{{$user->Id}}</td>
<td>{{$user->userName}}</td>
<td>{{$user->email}}</td>
<td>{{$user->roleName}}</td>
</tr>
@endforeach
@foreach($users作为$user)
{{$user->Id}
{{$user->userName}
{{$user->email}
{{$user->roleName}
@endforeach
您是否尝试过:
$users = User::whereHas('roles', function($query) {
$query->where('name','=','Admin');
}])->get()->sortByDesc('roles.name');
您可以在中找到sortBy或sortByDesc的解释。您是否尝试过:
$users = User::whereHas('roles', function($query) {
$query->where('name','=','Admin');
}])->get()->sortByDesc('roles.name');
您可以在中找到sortBy或sortByDesc的解释。您可以使用where has 试试下面的方法
$users = User::with('roles')->whereHas('roles', function($query) {
$query->where('name', 'Admin');
})->get();
您可以使用
whereHas
试试下面的方法
$users = User::with('roles')->whereHas('roles', function($query) {
$query->where('name', 'Admin');
})->get();
试试这个
$users = User::with(['roles' => function($query) {
$query->whereNotNull('name')
->where(['name'=>'Admin']);
}])->get();
试试这个
$users = User::with(['roles' => function($query) {
$query->whereNotNull('name')
->where(['name'=>'Admin']);
}])->get();
sry,click小姐,我试一下。等等,这不是我的反对票xdsry,click小姐,我试一下。等等,不是我的反对票xdok,你的问题是()的问题,函数return all model的问题,你可以在这里看到差异ok,你的问题是()的问题,函数return all model的问题,你可以在这里看到差异