2017-03-16 18 views
4

私のクエリは、このようなものです:ララベルの雄弁に角括弧を追加するにはどうすればよいですか? (Laravel 5.3)

Message::where('seller_id', auth()->user()->id) 
     ->orWhere('buyer_id', auth()->user()->id) 
     ->where('deleted_by', 'not like', '%'.auth()->user()->id.'%') 
     ->get(); 

しかし、このような結果:

私は雄弁

をlaravelするように変更したい

SELECT * FROM message WHERE (seller_id = 1 OR buyer_id = 3) AND deleted_by NOT LIKE '%1%' 

私はこのようにしてみてください

SELECT * FROM message WHERE seller_id = 1 OR buyer_id = 3 AND deleted_by NOT LIKE '%1%' 

括弧が必要です。

ラベールの雄弁に角括弧を追加するにはどうすればよいですか?

答えて

6

はあなたの問題がある可能性がありますが解決を取得、これを試してみてください、あなたの閉鎖で

Message::where(function($query){ 
    $query->where('buyer_id', auth()->user()->id) 
    ->orWhere('buyer_id', auth()->user()->id); 
}) 
->where('deleted_by', 'not like', '%'.auth()->user()->id.'%') 
->get(); 
3

はこれを試してみてください:

Message::where(function ($query) { 
      $query->where('seller_id', auth()->user()->id) 
        ->orWhere('buyer_id', auth()->user()->id); 
     })->where('deleted_by', 'not like', '%'.auth()->user()->id.'%')->get(); 
6
Message::where(function ($query) { 
    $query->where('seller_id', auth()->user()->id) 
     ->orWhere('buyer_id', auth()->user()->id); 
}) 
->where('deleted_by', 'not like', '%'.auth()->user()->id.'%') 
->get(); 

を配置する必要があります。

3

このような場合は、クロージャを使用してください。

$userId = auth()->user()->id; 
Message::where(function($q) use($userId){ 
    $q->where('buyer_id', $userId) 
    ->orWhere('buyer_id', $userId); 
}) 
->where('deleted_by', 'not like', '%'.$userId.'%') 
->get(); 
関連する問題