2017-03-02 58 views
0

我有以下雄辯代碼:Laravel:更新使用find多行()

$gifts = FriendGift::find($collectedGifts); // An array of IDS 

我想設置爲所有collected = 1

我嘗試這樣做:

$gifts->update(['collected' => 1]); 

,但我得到了以下錯誤:

Method update does not exist 

有什麼不對?

回答

3

只需調用模型,並做了大規模更新這樣的:

FriendGift::whereIn('id', $collectedGifts)->update(['collected' => 1]); 
+0

如果您也回答實際問題,那麼這就是「有什麼問題」,而@lagbox精美地解釋了您的答案。 – Amarnasan

+0

我不能複製/重複他的答案。他已經說過什麼是錯的......下一步通常是「我該如何解決這個問題」? – EddyTheDove

6

您不在模型上呼叫update。你在一個沒有方法update的Eloquent Collection上打電話update

0

如果$ collectedGifts是一個數組,它不是要去工作。 Model :: find()正在等待一個簡單的id,而不是一個數組。

無論如何,我更喜歡使用元素的保存方法,如果我想更新字段。 因此,您只需獲取所需的行,爲其分配一些值,然後保存該實例。 例如:

$gifts = FriendGifts::find(15);//This is just 1 gift 
$gifts->collected = 1; 
$gifts->save(); 

對於多禮物:

$gifts = FriedGifts::where('id',15)->get(); 
foreach($gifts as $one_gift){ 
    $one_gift->collected = 1; 
    $one_gift->save(); 
} 

或類似的東西!

希望這會有所幫助! 祝你好運!