2016-06-08 3 views
0

Ich arbeite an Laravel 5.2. Ich sah ein Problem für das Senden eines Arrays zu Modellfunktion mit einem auf meinem Wert ist nicht gleich.So übergeben Sie Array in, wo Bedingung der Abfrage mit einem "ungleich" Bedingung

prüfe ich auf diese Weise funktioniert:

$users = DB::table('users') 
->where([ ['status','1'], ['subscribed','!=','1'], ]) 
->get(); 

Aber in meinem Fall, ich in einer wiederverwendbaren Funktion arbeite:

$whereData = array('name'=>'test' , 'id !=' => '5'); 
$users = DB::table('users')->where($whereData)->get(); 

Hier Ungleich nicht funktionstüchtig und bietet Fehler. Was ist korrekte Syntax für die Verwendung dieser wiederverwendbaren Funktion mit whereData Array besteht aus mehreren Operatoren wie "! =, <>, etc ...".

+0

Also, Sie wollen die Ergebnisse erhalten von 'Benutzer' Tabelle wo 'status = 1' oder' abonniert! = 1'? – Gunaseelan

+0

Nein, bitte seien Sie vorsichtig. Ich möchte wiederverwendbare Funktion arbeitet mit "$ whereData = array ('name' => 'test', 'id! =' => '5');". Das geht zur Modellfunktion und gibt Datensätze Name ist Test und ID ist nicht gleich 5. Aber 'ID! =' => '5' funktioniert nicht für Laravel. – steven

+0

Versuchen Sie '<>' anstelle von '! =' – Gunaseelan

Antwort

0

Ich würde Ihnen den folgenden Weg vorschlagen.

Senden Sie nur die Daten ohne Bedingung.

Daher

$whereData = array('name'=>$username , 'statusid' => $userid); 

$users = DB::table('users')->where('status', '=', $whereData['name'])->orWhere('subscribed', '<>', $whereData['statusid'])->get(); 

oder wie Sie erwähnt haben, ersetzen where mit whereColumn

So wird der Code sein,

$whereData = array(array('name','test') , array('id','<>','5')); 
$users = DB::table('users')->whereColumn($whereData)->get(); 
+0

@steven überprüfen Sie die Lösung. – Gunaseelan