我遇到了sytnax问题。我正在尝试保存属于发票的一系列发票项目。发票包含多个发票项目。问题是我使用此行尝试更新项目但收到错误。
$update->invoiceitem()->save($item);
创建新项目时,它可以正常工作。更新时我不确定我的代码出错了。我正在使用循环数组。这是代码:
$update = Invoice::find($id);
for($i = 0; $i < $count_ids; $i++){
$item = $update->invoiceitem;
dd($item); //this return the invoice items correctly.
$item->rate = $rate[$i];
$item->total_hours = $hours[$i];
$item->subtotal = $hours[$i] * $rate[$i];
$item->type = $type[$i];
$update->invoiceitem()->save($item);
}
模型关系是:
InvoiceItem模型
public function invoice() {
return $this->belongsTo(invoice::class);
}
发票模型
public function invoiceitem() {
return $this->hasMany('App\InvoiceItem', 'invoice_id', 'id');
}
答案 0 :(得分:0)
解决方案。
按ID查找需要更新的单个发票项,并在for循环中设置它们。由于这是在一个数组中,[$ i]很重要,因为没有它只会用最后一个数组数据更新第一个记录。
$itemID= $request->itemID; //hidden in input. There are other ways of getting this value.
for($i = 0; $i < $count_ids; $i++){
$item = InvoiceItem::find($itemID[$i]);
dd($item); //this return the invoice items correctly.
$item->rate = $rate[$i];
$item->total_hours = $hours[$i];
$item->subtotal = $hours[$i] * $rate[$i];
$item->type = $type[$i];
$item->save();
}