Laravel:使用Find()更新多行



我有以下雄辩的代码:

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

我想将全部设置为collected = 1

我尝试了:

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

但是我会收到以下错误:

Method update does not exist

怎么了?

您没有在模型上调用update。您在没有方法update的雄辩集合上调用update

只需调用模型,然后进行这样的质量更新:

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

如果$ collectedgifts是一个数组,则无法正常工作。模型:: 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();
}

或类似的东西!

希望这会有所帮助!祝你好运!

最新更新