2017-08-18 4 views
0

Ich habe Logik in einem Controller, der ein Array namens $ exclude erstellt.Laravel 5.4 whereNotIn scheinbar nicht funktioniert

Mit dd für $ schließe ich bekommen:

array:4 [▼ 
    0 => 2 
    1 => 3 
    2 => 4 
    3 => 5 
] 

was richtig ist.

Ich möchte diejenigen, die aus einem Ergebnis auszuschließen, so habe ich:

$potype = DB::table('potypes') 
       ->whereNotIn('id',[$exclude]) 
       ->get(); 

aber wenn ich die Abfrage diese Elemente enthalten sind, mit Ausnahme des ersten in der Anordnung ausgeführt werden. So ermöglichte ich die Abfrage Protokoll mit

DB::enableQueryLog(); 

und lief

dd(DB::getQueryLog()); 

mit dem Ergebnis der

array:1 [▼ 
    0 => array:3 [▼ 
    "query" => "select * from `potypes` where `id` not in (?)" 
    "bindings" => array:4 [▼ 
     0 => 2 
     1 => 3 
     2 => 4 
     3 => 5 
    ] 
    "time" => 0.67 
    ] 
] 

Die Tabelle hat 8 Aufzeichnungen aber die Abfrage ausgeführt wird 7 Rückkehr nur ommiting die erste der Liste:

Collection {#621 ▼ 
    #items: array:7 [▼ 

Wenn ich implodieren verwenden

$ ex = implodieren (' 'schließt $) und die Abfrage zu ändern -> whereNotIn (' id', [$ ex]) ich das gleiche Ergebnis - 7 Eintragungen nur die erste in der Liste wird ignoriert.

Ist das ein eloquenter Fehler oder ich?

Antwort

2

löschen [ ] und erneut prüfen:

$potype = DB::table('potypes') 
       ->whereNotIn('id',$exclude) 
       ->get(); 
+0

Ich habe - Error Invalid argument für foreach geliefert() –

+0

@JimElliott '' 'return dd ($ potype);' '' zu überprüfen, ob Sie mit der rechten Abfrage-Ergebnisse zu erhalten, wo ist foreach-Code? –

-2

OK es realtively einfach war mit Mohammed Kommentar mich in die richtige Richtung.

Als $exclude war ein array ich das bekommen geändert:

$potype = DB::table('potypes') 
      ->whereNotIn('id',$exclude) 
      ->get(); 

und es funktionierte OK!

+0

sollten Sie meine Antwort als akzeptiert überprüfen, nicht erneut als Antwort senden –

+0

Es tut mir leid, aber sie überlappten sich zeitlich –

Verwandte Themen