Laravelで検索機能(検索したい項目だけ)を実装する


PHP 7.1.29
Laravel Framework 5.5.48

Laravelにて以下の検索を行う。
・お届け先氏名
 ┗自由入力で部分一致
・注文日
 ┗開始日・終了日を選択して、その期間内の注文を検索
  開始日のみ入力されている場合:開始日以降の注文を全て表示
  終了日のみ入力されている場合:終了日以前の注文を全て表示としてください

※注文日、お届け先の氏名の複合条件でも検索されるように実装する。

public function search(Request $request)
{
    // 検索機能
    $query = $this->purchase->query();
    // 名前検索
    if (!empty($request->name)) {
        $query->where('full_name', 'like', "%{$request->name}%")->get();
    }
    // 日付検索(開始日)
    if (!empty($request->start_date)) {
        $query->where('created_at', '>=', $request->start_date)->get();
    }
    // 日付検索(終了日)
    if (!empty($request->end_date)) {
        $query->where('created_at', '<=', $request->end_date)->get();
    }
    $purchases = $query->get();

    return view('admin.purchase.index', compact('purchases', 'request'));
}

queryを使用することで
必要な検索のみを追加してDBよりデータを取得する。