Laravel:使用find()更新多行

时间:2017-03-02 09:55:20

标签: laravel laravel-5 eloquent

我有以下雄辩的代码:

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

我想将所有内容设为collected = 1

我试过了:

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

但是我收到以下错误:

Method update does not exist

怎么了?

3 个答案:

答案 0 :(得分:7)

您没有在模型上调用update。你在一个没有方法update的Eloquent Collection上调用update

答案 1 :(得分:3)

只需调用模型并执行大量更新:

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

答案 2 :(得分:0)

如果$ collectGifts是一个数组,那就不行了。 Model :: find()正在等待一个简单的id,而不是一个数组。

无论如何,如果我想更新字段,我更喜欢使用元素的save方法。 因此,您只需获取所需的行,为其指定一些值,然后保存实例。 例如:

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

或类似的东西!

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