2017-07-29 3 views
-1
$ids = '1, 2, 3'; 
$data = Modelname::whereNotIn('id', [$ids])->take(1)->get(); 

Die obige Abfrage liefert ein falsches Ergebnis. aber folgende Abfrage gibt das richtige Ergebnis.Laravel 5.4 Variable Parameter in Abfrage, falsches Ergebnis geben?

$data = Modelname::whereNotIn('id', [1, 2, 3])->take(1)->get(); 

So, wie die variable Parameter in Abfrage (Laravel 5.4) passieren.

+0

'$ ids' Variable enthält die obige Zeichenfolge oder' Array' von IDs? –

Antwort

1

Verwendung, wie unten zu machen Array

$ids = '1, 2, 3'; 
$idArr = explode(", ",$ids); 
$data = Modelname::whereNotIn('id', $idArr)->take(1)->get(); 

Achten Raum unter ids $ids = '1, 2, 3'; und exploding by string

0

Die whereNotIn eine array als zweites Argument annimmt.

Wenn Sie also eine kommagetrennte Zeichenfolge haben, die Sie in Ihrem ersten Szenario ausführen, müssen Sie sie in ein Array auflösen und dann an whereNotIn übergeben.

$ids = '1,2,3'; 
$idsArray = explode(',', $ids); // produces [1, 2, 3] 
// it's always a good idea to add a check because if array is empty then an SQL exception will be thrown. 
if(count($idsArray) > 0) { 
    $data = Modelname::whereNotIn('id', $idsArray)->take(1)->get(); 
} 

Hoffe das hilft.

+0

Aber das funktioniert bei leerem Array. –