whereBetween不存在,我不能应用分页

时间:2017-12-06 12:22:15

标签: laravel pagination where-clause

我有这个方法:

   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子句的那个)我不能将方法“paginate”应用于集合,不会引发错误但是当我将它传递给视图时,“link()”方法没有工作并再次提出错误。 哪里错了?

Laravel 5.4

1 个答案:

答案 0 :(得分: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);     
    [...]
}