【发布时间】:2020-08-24 23:11:38
【问题描述】:
如何在此处对结果进行分页并保持排序顺序。
public function show(Language $language)
{
$questions = Question::with(['translations' => function($q) use ($language) {
$q->where('language_id', $language->id);
}])->get()->sortByDesc('translations');
return view('language.show', compact('questions', 'language'));
}
现在,如果我尝试通过这样做进行分页,我会收到一条错误消息: 调用未定义的方法 Illuminate\Database\Eloquent\Builder::sortByDesc()
$questions = Question::with(['translations' => function($q) use ($language) {
$q->where('language_id', $language->id);
}])->sortByDesc('translations')->Paginate(20);
我也从这个帖子中尝试过这个:how to use pangination and sortByDesc fuction in laravel?
$questions = Question::with(['translations' => function($q) use ($language) {
$q->where('language_id', $language->id);
}])->Paginate(20);
$questions->setCollection($questions->sortByDesc('translations'));
这种方法很有效,因为我按排序顺序获得了分页结果,但这不是我想要的。我希望所有问题都先按有无翻译排序,然后分页。
注意,翻译不是一列,它只是查询的结果,所以我不能按照我链接的帖子中的建议使用 SQL。
问题模型中的关系。
public function translations()
{
return $this->hasMany('App\QuestionTranslation');
}
【问题讨论】: