Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Laravel 5.x » Laravel 5.6 with(жадная)/пагинация и фильтрация по связи » 28.04.2018 17:11:20

Fugitive
Ответов: 0

Доброго времени суток, сильно упрощено опишу проблему:
2 таблички связные между собой 1 к 1

[b]sections[/b]
id
count (тут хранятся некие числа)

[b]statements[/b]
id
title
sections_id

В модели statements

public function section() {
		    return $this->hasOne('App\Section','id' ,'sections_id');
	}

в контроллере statements

public function show(Request $request) {
                    $searchBy = $request->get('sort');
                    $statements = Statement::with('section');

switch ($searchBy)
   case 'count_up':
        $statements = Statement::with('section')->orderBy('sections.count_up', 'ASC')->paginate(10); // это не работает, т.к. колонка не найдена
   breeak
   case 'count_down':
        $statements = Statement::with('section')->orderBy('sections.count_down', 'ASC')->paginate(10); // это не работает, т.к. колонка не найдена
   breeak
   default:
                $statements = Statement::with('section')->orderBy('id', 'desc')->paginate(10);
   break;

return view('statements')->with([
		    'statements' => $statements,
		    'searchBy'=> $searchBy,
]);
}

во вьюхе:

<a type="button" class="btn btn-xs" href="?sort=count_up"><i class="fa fa-arrow-up"></i></a>
<a type="button" class="btn btn-xs" href="?sort=count_down"><i class="fa fa-arrow-down"></i></a>

@if(!empty($statements))
                       @foreach ($statements as $statement)
                         {{$statement->section->title}}
                         {{$statement->id}}
                         {{$statement->section->count}}
                       @endforeach

<div class="text-center">{{ $statements->appends(['sort' => $searchBy])->links() }}</div>

А теперь собственно вопрос, как мне сделать сортировку всех statements по колонке count из таблички sections, и при этом что бы пагинация работала...
понимаю что можно получить коллекцию

$statements = Statement::with('section')->get()->sortByDesc('section.count');

но при этом пагинация работать не будет...

Подвал раздела