2017-12-06 6 views
0

ページ付け適用カント:はwhereBetween存在doesntのと私は、私はこの方法できた

public function indexGuest($idAzienda, Request $request){ 

    $companyId = $idAzienda; 
    $ddts = Ddt::where('company_id',$companyId); 
    $ddt_urls= Ddt_file_url::all(); 

    if($request->start_date || $request->end_date){ 
     $ddts->whereBetween('created_at',[new Carbon($request->start_date),new Carbon($request->end_date)]); 
    } 
    $ddts->paginate(10); 

    return view('guest.ddt-management')->with('ddts', $ddts)->with('ddt_urls',$ddt_urls) 
     ->with('companyId',$companyId); 


} 

マイstart_dateend_date"yyyy-mm-dd"のような文字列にしています。 私はこれを直接クエリに渡そうとしましたが、希望がないカーボンオブジェクトのような例のように!

"where(wherebeeteween句がない唯一のもの)を実行した後、コレクションに" paginate "メソッドを適用できません。エラーは発生しませんが、ビューに渡すと" link() "メソッド動作しないで、エラーを再度発生させます。 どこが間違っていますか?

Laravel 5.4

答えて

1

構造このようなあなたのwhere秒。

public function indexGuest($idAzienda, Request $request) { 
    [...] 
    $ddts = Ddt::where('company_id', $companyId) 
     ->where(function($query) use ($request) { 
      if($s = $request->get("start_date") { 
       $s_date = Carbon::parse($s)->format("Y-m-d"); 
       $query->whereDate("created_at", ">=", $s_date); 
      } 
      if($e = $request->get("end_date") { 
       $e_date = Carbon::parse($e)->format("Y-m-d"); 
       $query->whereDate("created_at", "<=", $e_date); 
      } 
     }) 
     ->paginate(10);  
    [...] 
} 
+0

私はしばらく時間を取って理解していますが、機能します!多くのおかげさ...どこでページングに関する私のアプローチに間違っていますか?どうもありがとう! – JahStation

+0

実際に何が問題の原因かわかりません。おそらく、 'paginate'の代わりに' toSql'を使い、 'dd($ ddts)'を使って結果をダンプして、クエリが異なるかどうか調べてみてください。申し訳ありません。 –

関連する問題