2016-11-29 11 views
0

は、このコードを考える:私は、キーワードで検索すると'WHEN'条件を使用してlaravelクエリービルダーにカッコを追加する方法は?

$objResellerList - DB::table('ResellerMaster as RM') 
    ->leftJoin('StateMaster as SM','SM.id',RM.id_StateMaster') 
    ->leftJoin('RegionMaster as REM','REM.id','=','RM.id_RegionMaster') 
    ->leftJoin('DealerGroupMaster as DGM','DGM.id','=','RM.id_DealerGroupMaster') 
    ->when($keywords, function($query) use ($keywords) { 
    return $query->where('RM.company_name', 'like', '%'.$keywords.'%') 
     ->orWhere('DGM.name', 'like', '%'.$keywords.'%') 
     ->orWhere('RM.email', 'like', '%'.$keywords.'%') 
     ->orWhere('RM.pic', 'like', '%'.$keywords.'%') 
     ->orWhere('RM.pic_mobile_no', 'like', '%'.$keywords.'%'); 
    }) 
    ->when($status, function($query) use ($status) { 
    return $query->where('RM.status', $status); 
    }) 
    ->select('RM.*','SM.name as state','REM.name as region', 'DGM.name as dealer_group') 
    ->orderby('RM.company_name','asc') 
    ->paginate(10); 

、私はときの状態でブラケットとそれを閉じる必要があります。状態のときにブラケットを含めるには?

+2

が親切にあなたのコードの代わりに、画像を添付ブラケット与えます。 – active92

+0

あなたのコードを共有してください、私はあなたのコードを変更します –

+0

状態の状態、どのようにする前に、キーワード部分をカバーするブラケットが必要ですか? – Hungez

答えて

0
DB::table('users') 
     ->where('name', '=', 'John') 
     ->orWhere(function ($query) { 
      $query->where('votes', '>', 100) 
        ->where('title', '<>', 'Admin'); 
     }) 
     ->get(); 

はuが

が名= 'ジョン' または(投票> 100とタイトル<> '管理者')

はとても機能付き

->orWhere(function ($query) { 
      $query->where('votes', '>', 100) 
        ->where('title', '<>', 'Admin'); 
     }) 
を使用するユーザーから選択*ブラケット与えます

または

->where(function ($query) { 
      $query->where('votes', '>', 100) 
        ->where('title', '<>', 'Admin'); 
     }) 

それはuが

使用

->when($status,function($query) { 
    return $query->where(function ($query) { 
     //do some action 
    }) 
}) 
+0

に変換します - ($ status、function($ query)use($ status){ return $ query-> where ( 'RM.status'、$ status); }); })このように記述しますが、効果はありません。 – Hungez

関連する問題