2017-11-01 3 views
1

Laravel EloquentとQuery Builderを使用して3つのクエリを作成しようとしています。 最初に試したのは、最初の1つがuser_name & customer_nameで検索され、もう1つが日付でどのように検索されたのですか?私は宣言の順序が間違っているようだと思う。私たちを手伝ってくれますか?Laravel QueryとEloquentによる3つの検索の混同

enter image description here

public function job_history_search(Request $request) 
{ 
    $jobs = Job::where('user_name', 'like', '%'.$request->name.'%') 
    ->orWhere('customer_name', 'like', '%'.$request->name.'%') 
    ->whereBetween('created_at', array(
    (Carbon::parse($request->input('datepicker_from'))->startOfDay()), 
    (Carbon::parse($request->input('datepicker_to'))->endOfDay()))) 
    ->orderBy('created_at', 'desc') 
    ->paginate(15); 

    return view('jobs.index', ['jobs' => $jobs]); 
} 
+0

高速化のためにSQL索引を使用するには、最適化のためにSQLでLIKEを使用します。 – Disfigure

+0

@Disfigure、ありがとう、検索テキストには%を使用するのではなく、解決方法はありますか?:) – Magnetic

+0

それを使用することはできますが、問題なく使用できます。 $ request-> name。 '%'のように検索してください。 – Disfigure

答えて

1

あなたはそのようなあなたのwhere句実行する必要がありますだけLIKEの終わりにそれを使用し、先頭にいない%とSQLでのLIKEの最適化を使用するために

Job::where(function ($query) use ($request) { 
    return $query->where('customer_name', 'LIKE', $request->name . '%') 
      ->orWhere('user_name', 'LIKE', $request->name .'%'); 
}) 
->whereBetween('created_at', array(
    (Carbon::parse($request->input('datepicker_from'))->startOfDay()), 
    (Carbon::parse($request->input('datepicker_to'))->endOfDay()))) 
->orderBy('created_at', 'desc') 
->paginate(15); 

をより速い結果のためにSQL索引を使用するステートメント

+0

感謝..しかし、エラー... (1/1)ErrorException 未定義の変数があった:私は、コールバックでの使用を追加するのを忘れ – Magnetic

+0

は申し訳ありません要求し、私は働いていないポスト – Disfigure

+0

を編集し、ビューを見ることができませんクリックして検索ボタンをクリックして...今私はデバッグ...ありがとう:) – Magnetic

関連する問題