2017-04-13 5 views
6

IWie mehrere OR, AND-Bedingung in Laravel verwenden, fragt

My Custom Abfrage für Abfrage in Laravel Hilfe benötigen: (Genaues Ergebnis Return)

Select * FROM events WHERE status = 0 AND (type="public" or type = "private") 

wie diese Abfrage in Laravel zu schreiben.

Event::where('status' , 0)->where("type" , "private")->orWhere('type' , "public")->get(); 

Aber es alle öffentlichen Veranstaltungen Rückkehr, den Status und nicht 0 ist.

Ich bin mit Laravel 5.4

Antwort

1

verwenden

$event = Event::where('status' , 0); 

$event = $event->where("type" , "private")->orWhere('type' , "public")->get(); 

oder diese

Event::where('status' , 0) 
    ->where(function($result) { 
     $result->where("type" , "private") 
      ->orWhere('type' , "public"); 
    }) 
    ->get(); 
+0

dank dieser auch arbeiten. –

0

In Ihrem Fall, dass Sie die Abfrage nur umschreiben kann ...

select * FROM `events` WHERE `status` = 0 AND `type` IN ("public", "private"); 

Und mit Eloquent:

$events = Event::where('status', 0) 
    ->whereIn('type', ['public', 'private']) 
    ->get(); 

Wenn Sie eine Schließung eine gruppierte OR/AND, verwenden haben wollen:

$events = Event::where('status', 0) 
    ->where(function($query) { 
     $query->where('type', 'public') 
      ->orWhere('type', 'private'); 
    })->get(); 
0

Versuchen Sie es. Für mich geht das.

$rand_word=Session::get('rand_word'); 
$questions =DB::table('questions') 
    ->where('word_id',$rand_word) 
    ->where('lesson_id',$lesson_id) 
    ->whereIn('type', ['sel_voice', 'listening']) 
    ->get(); 
Verwandte Themen