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

上面的查詢給出錯誤的結果。但下面的查詢給出正確的結果。laravel 5.4查詢中可變參數,給出錯誤結果?

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

所以,如何通過所述可變參數中查詢(laravel 5.4)。如下面

+0

'$ ids'變量包含上面的字符串或ID數組? –

回答

1

使用,使數組ids $ids = '1, 2, 3';之間

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

照顧空間和exploding by string

0

whereNotIn接受一個array作爲它的第二個參數。

所以,如果你有一個逗號分隔的字符串,你在第一種情況下做,你需要將它分解成一個數組,然後傳遞給whereNotIn

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

希望這會有所幫助。

+0

但是,這是在空陣列的情況下工作。 –