如何在laravel中将paginate与sortBy一起使用

如何在laravel中将paginate与sortBy一起使用,laravel,pagination,Laravel,Pagination,我想做的是:首先,使用laravel中的sortBy方法对收集的结果进行排序,如下所示: $users = User::with('user_profile', 'posts') ->whereHas('roles', function($query){ return $query->where('slug', 'moderator'); })->get() ->sortB

我想做的是:首先,使用laravel中的
sortBy
方法对收集的结果进行排序,如下所示:

$users = User::with('user_profile', 'posts')
           ->whereHas('roles', function($query){
                 return $query->where('slug', 'moderator');
           })->get()
           ->sortBy(function($user){
                 return $user->user_profile->country . " - " . $user->posts->name;
           });
现在,当我在
sortBy
方法之后使用
paginate(10)
时,它返回一个错误。我还尝试使用
orderBy
方法使其工作,但我无法使用回调函数根据所需的输出对它们进行排序。如何在sortBy中使用
paginate
?有什么想法吗

更新1

User.php

public function user_profile(){
    return $this->hasOne('Modules\Pages\Models\UserProfile');
}


public function posts(){
    return $this->hasOne('Modules\Pages\Models\Post');
}

您必须使用
orderBy()
和联接:

$users=User::select('users.*')
->join('user_profiles'、'user_profiles.user_id'、'='、'users.id')
->join('posts','posts.user_id','=','users.id')
->whereHas('roles',function($query){
$query->where('slug','moderator');
})
->orderByRaw(“concat(用户_profiles.country,'-',posts.name)”)
->分页(10);

请发布
用户配置文件
发布关系
。@JonasStaudenmeir请查看更新。使用这些查询安全吗?您的意思是关于SQL注入吗?是的,没有用户输入。我有一个错误。也许我的一些用户还没有帖子?
SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“users.id``internal join
附近使用的正确语法,这是全部消息吗?你的Laravel版本是什么?