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



我正在尝试更新多行,但我遇到数组到字符串的转换错误。捐赠物品是一对多的关系,最多可以更新5种类型的物品。我已经尝试使用Laravel中的更新多行数据库的解决方案并使用saveMany()方法,但我仍然无法更新给定的行。

这是我尝试过的:

    $n = 0;
    $donationItems = DonationItems::where('donation_id', $donationId)->get();
    foreach ($donationItems as $item) {
        $itemName = $r->get('item-name');
        $itemQuantity = $r->get('item-quantity');
        $item->name = $itemName;
        $item->quantity = $itemQuantity;
        $item->donation_id = $donation->id;
        $donation->donationItems()->save($item);
        $n += 1;
    }

更改行

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

$item->save();

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

您可以使用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'];

最新更新