我有一个问题:
$users = User::byRole()->inCompany()
->with([
'role' => function ($q) {
$q->select('id', 'title')->orderBy('title','DESC');
},
'company' => function ($q) {
$q->select('id', 'company_name');
},
'projects' => function ($q) {
$q->select('id', 'name');
},
])->select([
'email',
'id',
'company_id',
])->paginate();
问题在于它不会被角色标题排序。
我做错了什么?
谢谢
答案 0 :(得分:1)
您可以使用修改后的withCount()
:
$users = User::byRole()->inCompany()
->with([
'role' => function ($q) {
$q->select('id', 'title');
},
'company' => function ($q) {
$q->select('id', 'company_name');
},
'projects' => function ($q) {
$q->select('id', 'name');
},
])->select([
'email',
'id',
'company_id',
])->withCount(['role as title' => function ($q) {
$q->select('title');
})->orderBy('title', 'DESC')
->paginate();
答案 1 :(得分:1)
你也可以像这样使用join
,
->join('roles','roles.id','user.role_id')
...
...
->orderBy('roles.title', 'DESC')
我希望这会对你有所帮助