【发布时间】:2018-09-21 16:19:41
【问题描述】:
我正在尝试使用 Laravel hasManyThough 更新子模型。
我尝试过的
Base模型的关系如下:
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 提供。
更新:
表结构
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
【问题讨论】:
-
问题在于您在此处使用的查询。分享相同的内容以获得更多说明。
-
您认为我需要更改一张表的列名吗?
-
我建议直接更新
Transaction模型。 -
我不能,因为订单有很多发票,发票有很多交易。
-
如果你调用 $order->transactions 你会得到一个交易集合吗?
标签: php mysql laravel eloquent