我正在尝试更新多行,但我遇到数组到字符串的转换错误。捐赠物品是一对多的关系,最多可以更新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'];