如何在laravel中将paginate与sortBy一起使用
我想做的是:首先,使用laravel中的如何在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
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版本是什么?