[英]Update failed with hasManyThrough relationship in laravel
我正在尝试使用Laravel hasManyThough更新子模型。
基本模型具有如下关系:
public function transactions()
{
return $this->hasManyThrough('App\Transaction', 'App\Invoice');
}
并且我使用下面的代码来更新子项。
$order->transactions()->update([
'customer_id' => 100,
'user_id' => 100
]);
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'customer_id' in field list is ambiguous (SQL: update `invoice_items` inner join `invoices` on `invoices`.`id` = `invoice_items`.`invoice_id` set `customer_id` = 2, `user_id` = 2, `updated_at` = 2018-09-21 22:03:45 where `invoices`.`order_id` = 1)
我使用的是laravel 5.6,模型是artisan make:model
提供的默认artisan make:model
。
表结构
orders
- id
- user_id
- customer_id
- content
invoices
- id
- order_id
- user_id
- customer_id
- content
transactions
- id
- invoice_id
- user_id
- customer_id
- content
现在,我为这个问题提供了一个临时解决方案。
foreach ($order->transactions as $transaction) {
$transaction->update($updateRules);
}
请随时发布您的解决方案。
这是解决方案:
字段列表中的“ customer_id”列不明确,即两个表中都存在用于内部联接的customer_id字段。 通过点(。)运算符将customer_id与表名一起使用。
更新invoice_items
内部联接invoices
上invoices
。 id
= invoice_items
。 invoice_id
设置发票。 customer_id
= 2,发票。 user_id
= 2, updated_at
= 2018-09-21 22:03:45 invoices
。 order_id
= 1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.