Неправильное общее разбиение на страницы с выбранным отчетливым в Laravel 6 - PullRequest
0 голосов
/ 12 февраля 2020

Я использую Laravel 6.12, у меня есть этот запрос:

$queryJob = DB::table('jobs as j')->join('job_translations as jt', 'j.id', 'jt.job_id')
        ->whereNull('j.deleted_at')
        ->whereNull('jt.deleted_at')
        ->select('j.id', 'j.short_name', 'j.status', DB::raw("case when j.short_name = '{$request->short_name}' then 0 else 1 end"))
        ->distinct();

$jobs = $queryJob->paginate($qtyItemsPerPage);

В результатах отображается общая ошибка:

enter image description here

Итого = 3, но, как видно, данные содержат только 2 элемента.

Я читал здесь, что при использовании отдельного, я должен четко понимать, по какому столбцу должен быть рассчитан итог: Отличный () с разбиением на страницы () в laravel 5.2 не работает

Таким образом, я изменил свой запрос следующим образом:

$jobs = $queryJob->paginate($qtyItemsPerPage, ['j.*']);

Но без успеха сумма все равно не так.

1 Ответ

0 голосов
/ 12 февраля 2020

Надеюсь, что я не пойму неправильно вашу структуру БД и отношений, а также цель вашего запроса, возможно, это позволит избежать использования distinct или groupBy в целом?

$shortname = $request->input('short_name'); 
$queryJob = Job::with('job_translations')->select('id','short_name',
    'status', DB::raw("case when short_name = '" . $shortname . "' 
    then 0 else 1 end")
    ->paginate($qtyItemsPerPage);

Пагинацию можно легко добавить вручную с помощью skip и take на случай, если вам нужно использовать groupBy

 $queryJob->skip(($page - 1) * $qtyItemsPerPage)->take($qtyItemsPerPage)->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...