2016-12-09 3 views
1

次のページ区切りクエリでは、並べ替えコードをOrderByメソッドで追加しましたが、ソートおよび順序フィールドが設定されていないため、そこ。存在するかどうかを設定したり、nullを設定したりすることができます。Request :: get( 'xyz')フィールドが存在する場合、orderByを追加します。

->select(array(
       'to_jobs.rec_id', 
       'to_jobs.contarct_code', 
       'to_jobs.job_num', 
       'to_sites.site_name', 
       'to_sites.postcode', 
       'to_sites.site_id' 
       )) 
      ->orderBy(Request::get('sort'), Request::get('order')) 
      ->leftjoin('to_sites', 'to_jobs.fk_site_id', '=', 'to_sites.site_id') 
      ->paginate(10); 
+0

きっとあなたが同じ順序であなたが改ページコードを実行するたびに結果をソートする必要があります、またはあなたが行を失うことになりますまたは複数のページにいくつかを提示する – RiggsFolly

答えて

0

Eloquentを使用している場合は、local scopeを使用できます。

クエリビルダクエリに対しては、when()を使用しようとすることができます:

->when(request()->has('sort'), function ($q) { 
    return $q->orderBy(request()->sort, request()->order); 
}) 
0

あなたは単にsort入力をチェックするifステートメントを使用して、あなたのページネーションを構築することができます。

これを試してください。

$query->select(array(
     'to_jobs.rec_id', 
     'to_jobs.contarct_code', 
     'to_jobs.job_num', 
     'to_sites.site_name', 
     'to_sites.postcode', 
     'to_sites.site_id' 
    )) 
    ->leftjoin('to_sites', 'to_jobs.fk_site_id', '=', 'to_sites.site_id'); 
if (Request::has('sort')) 
{ 
    $query->orderBy(Request::get('sort'), Request::get('order')); 
} 
$query->paginate(10); 


参考:

関連する問題