[英]Laravel 8: Method Illuminate\Database\Eloquent\Collection::update does not exist ERROR
[英]Error: "Method Illuminate\Database\Eloquent\Collection::update does not exist." How do I update multiple row of data to table? [Eloquent]
所以我有这个
$master_item_id = array_map('intval', $request->master_item_id);
$quantity = array_map('intval', $request->quantity);
$price = MasterItem::whereIn('id', $master_item_id)->get('price');
foreach ($master_item_id as $key => $no) {
$input['price'] = $price[$key]['price'];
$input['quantity'] = $quantity[$key];
$subtotal[] = $input['price'] * $input['quantity'];
}
$total_price = array_sum($subtotal);
// Update transaction
$transaction = Transaction::find($id);
$transaction->total_price = $total_price;
$transaction->last_edited_by = Auth::user()->name;
$transaction->update();
// Update transaction_item
foreach ($master_item_id as $key => $no) {
$transaction = Transaction::find($id);
$transaction->transaction_item->transaction_id= $transaction->id;
$transaction->transaction_item->master_item_id = $no;
$transaction->transaction_item->quantity = $quantity[$key];
$transaction->transaction_item->price = $price[$key]['price'];
$transaction->transaction_item->update();
}
我的 Model
// Transaction Model
public function transaction_item()
{
return $this->hasMany(TransactionItem::class, 'transaction_id');
}
public function item()
{
return $this->belongsToMany(MasterItem::class, 'transaction_item', 'transaction_id', 'master_item_id');
}
// TransactionItem Model
public function transaction()
{
return $this->belongsToMany(Transaction::class, 'transaction_id');
}
public function item()
{
return $this->belongsToMany(MasterItem::class, 'master_item_id');
}
// MasterItem Model
public function transaction_item()
{
return $this->hasMany(TransactionItem::class, 'master_item_id');
}
我的表结构
transaction: id(pk), total_price
transaction_item: id(pk), transaction_id(fk), master_item_id(fk), quantity, price
master_item: id(pk), item_name, price
当我尝试更新时弹出错误
Method Illuminate\Database\Eloquent\Collection::update does not exist.
错误突出显示了我的代码的这一行
$transaction->transaction_item->update();
如何编辑/更新多行数据? 还有我model里的关系对吗? 谢谢!
您正在Eloquent\\Collection
上调用update()
方法,但该方法不起作用。 你可以试试这个:
// Update transaction_item
foreach ($master_item_id as $key => $no) {
$transaction = Transaction::find($id);
$transaction->transaction_item()->update([
'transaction_id' => $transaction->id,
'master_item_id' => $no,
'quantity' => $quantity[$key],
'price' => $price[$key]['price']
]);
}
你需要得到$transaction->transaction_item()
而不是$transaction->transaction_item
你变成了Illuminate\Database\Eloquent\Relations\HasMany
然后你可以调用update()
方法。
$transaction->transaction_item()->update(['some_field' => 'some_variable']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.