2017-12-17 10 views
1

オプションのパラメータを受け入れるクエリビルダでは、節が必要です。たとえば、次の点を考慮してください。Laravelクエリビルダ - アドバンスト条件節(オプションのパラメータ)

商品タイトル、会社名、所在地(郵便番号、都市または州)の3つの検索フィールドがあります。 2^3(8)可能性:

ロケーションはORで接続されています。

WHERE location.postal_code LIKE '%...%' OR location.city LIKE '%...%'; 

と検索ボックスの間の関係

WHERE (location.postal_code LIKE '%...%' OR location.city LIKE '%...%') AND company.name LIKE '%...%'; 

私たちは生のクエリとのif-else文でそれを書くことができます。クエリービルダーでこの「クリーン」をどのように書くことができますか?

答えて

2

このような閉鎖はどこで使うべき:orWhereがきれいクエリを形成する場所、

$q->where(function($q) use($request) { 
    if($request->code) 
    { 
     $q->orWhere('postal_code ','LIKE','%'.$request->code.'%'); 
    } 

    if($request->city) 
    { 
     $q->orWhere('city','LIKE','%'.$request->code.'%'); 
    } 

    if($request->companyName) 
    { 
     $q->where('companyName',.....); 
    } 
})->get(); 

だから、あなたが持っています。また、あなたは閉鎖の中でそれを使用するあなたの要求を渡すことができます。また、$ q-> orWhereを使用して、その内部に関数を渡すこともできます。