我有两个表:Order和Order_details。在这两个表之间,存在一对多关系。
订单字段为:
id_order
发票
顾客ID
用户身份
总
Order_details字段:
order_id是一个外键,引用了orders表上的id_order
订单模型
//
protected $primaryKey = 'id_order';
protected $fillable = [
'invoice', 'customer_id', 'user_id', 'total'
];
public function order_detail()
{
return $this->hasMany(Order_detail::class);
}
Order_detail模型
protected $primaryKey = 'order_detail_id';
protected $fillable = [
'order_id', 'product_id', 'qty'
];
protected $guarded = [];
public function order()
{
return $this->belongsTo(Order::class, 'order_id', 'order_detail_id');
}
当我尝试向这些表中插入数据时,出现错误
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'order_id_order' in 'field list' (SQL: insert into `order_details` (`product_id`, `qty`, `order_id_order`, `updated_at`, `created_at`) values (8, 1, 10, 2020-09-07 10:30:04, 2020-09-07 10:30:04))
为什么laravel假设我有order_id_order字段而不是order_id?以及如何解决?
谢谢
在这里,在您的问题中,orders
表是父表,order_details
是子表。因此,一个订单可以包含许多订单详细信息。所以有one-to-many
关系。
在Order.php
ie订单模型中,您需要与主键和外键进行正确映射并具有正向关系。
public function orderDetails()
{
#1st arg is related model,
#2nd arg is related column of order_details table
#3rd arg is related column of orders table
return $this->hasMany(OrderDetail::class, 'order_id', 'order_id');
}
现在进入OrderDetail.php
order_detail模型,您需要具有如下所示的逆关系。
public function order()
{
#1st arg is related model,
#2nd arg is related column of orders table
#3rd arg is related column of order_details table
return $this->belongsTo(Order::class, 'order_id', 'order_id');
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句