2017-03-16 2 views
4

Meine Frage ist wie folgt:Wie kann ich Klammern auf der Laravel eloquent hinzufügen? (Laravel 5.3)

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

ich es ändern wollen eloquent

ich so versuchen Laravel:

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

Aber das Ergebnis wie folgt aus:

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

Scheint, es braucht Klammern

Wie kann ich Klammern auf der Laravel eloquent hinzufügen?

Antwort

6

Sie benötigen zu setzen, wo in einem Verschluss

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

Versuchen Sie folgendes:

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(); 

das Versuchen, das Problem gelöst bekommen werden.

3

In solchen Fällen Verschluss verwenden.

$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(); 
Verwandte Themen