在Laravel中更新一对多关系:数组到字符串转换错误

时间:2017-10-21 12:21:34

标签: php laravel orm eloquent

我试图更新多行,但我面临一个数组到字符串转换错误。捐赠物品捐赠是一对多关系,最多可以更新5种类型的物品。我已经尝试过使用Update multiple rows of database in Laravel中的解决方案并使用了saveMany()方法,但我还是无法更新给定的行。

这是我尝试的内容:

export class IAjaxAdapter {
    static implement: typeof IAjaxAdapterInstance;
}

2 个答案:

答案 0 :(得分:0)

更改行

$donation->donationItems()->save($item);

有关

$item->save();

由于您已经在donation_id上设置了$item,因此您无需通过关系保存它们

答案 1 :(得分:0)

您可以使用update()方法创建一个查询而不是N个查询:

DonationItems::where('donation_id', $donationId)
    ->update([
        $item->name = $r->item-name;
        $item->quantity = $r->item-quantity;
        $item->donation_id = $donation->id;
    ]);

只要您在模型中正确使用$fillable数组,这将有效:

protected $fillable = ['name', 'quantity', 'donation_id'];