2017-12-06 20 views
0

나는이 방법을했습니다 페이지를 매기는 적용하지 못할 :는 whereBetween 존재 나던 그리고 난

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" 같은 문자열에 온다. 나는 그것을 질의에 직접 전달하려했으나 희망이없는 탄소 오브젝트와 같은 예제에서와 같이!

지금은 wherebeeteween 절이없는 쿼리 만 실행하면 컬렉션에 "페이지 매김"메서드를 적용 할 수 없지만 오류는 발생하지 않지만 뷰에 전달하면 "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

Im 무슨 문제인지 알 수 없습니다. 어쩌면'paginate' 대신'toSql'을 사용하고'dd ($ ddts)'를 사용하여 결과를 덤프하여 쿼리가 다른지 확인하십시오. 죄송합니다, 지금 모바일입니다. –