我有以下雄辯代碼:Laravel:更新使用find多行()
$gifts = FriendGift::find($collectedGifts); // An array of IDS
我想設置爲所有collected = 1
。
我嘗試這樣做:
$gifts->update(['collected' => 1]);
,但我得到了以下錯誤:
Method update does not exist
有什麼不對?
我有以下雄辯代碼:Laravel:更新使用find多行()
$gifts = FriendGift::find($collectedGifts); // An array of IDS
我想設置爲所有collected = 1
。
我嘗試這樣做:
$gifts->update(['collected' => 1]);
,但我得到了以下錯誤:
Method update does not exist
有什麼不對?
只需調用模型,並做了大規模更新這樣的:
FriendGift::whereIn('id', $collectedGifts)->update(['collected' => 1]);
您不在模型上呼叫update
。你在一個沒有方法update
的Eloquent Collection上打電話update
。
如果$ 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();
}
或類似的東西!
希望這會有所幫助! 祝你好運!
如果您也回答實際問題,那麼這就是「有什麼問題」,而@lagbox精美地解釋了您的答案。 – Amarnasan
我不能複製/重複他的答案。他已經說過什麼是錯的......下一步通常是「我該如何解決這個問題」? – EddyTheDove