Как я могу разбить результат здесь и сохранить порядок сортировки.
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 :: sortByDes c ()
$questions = Question::with(['translations' => function($q) use ($language) {
$q->where('language_id', $language->id);
}])->sortByDesc('translations')->Paginate(20);
Я также пробовал это из этого сообщения: как использовать pangination и sortByDes c fuction в 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');
}