2017-03-09 55 views
1

每當我運行此查詢,不另一個表中我得到這個錯誤返回數據錯誤使用「whereNotIn」方法[laravel當

BadMethodCallException in Macroable.php line 74: 
Method whereNotIn does not exist 

查詢

$shipment_data_unassigned = Shipment::all()->where('status','=', $rulesetname) 
    ->Where('shipment_cycle', '!=', 'closed') 
    ->whereNotIn('ccctadm.Shipment.id',$assigned); 

我在做什麼錯?

回答

3

當您使用all()時,它執行查詢並返回一個包含結果的集合。所以當你鏈接更多的方法時,你實際上鍊接在一個集合上而不是構建SQL查詢。集合有一個where()過濾已經返回的結果(不是SQL),但它們沒有whereNotIn()方法。

在SQL中執行此操作刪除all()調用,並在末尾將其替換爲get()

$shipment_data_unassigned = Shipment::where('status','=', $rulesetname) 
    ->Where('shipment_cycle', '!=', 'closed') 
    ->whereNotIn('ccctadm.Shipment.id',$assigned)->get(); 
+1

是的你對這是正確的答案 – meda

+1

謝謝你這麼容易,你能告訴我get()和all()方法之間的區別嗎?如果你有時間。 –

+1

@AhmadzIssa'all()'方法是一種靜態方法,它是簡單地獲取該模型數據庫中每條記錄的快捷方式。你不能添加任何約束。一旦添加了像'Shipment :: where(...)'這樣的約束,您現在正在使用一個查詢構建器實例。爲了執行查詢並獲得結果,您需要在查詢生成器實例上調用'get()'。 – jfadich