我有下表我无法使用订单hasMany
产品b / c产品没有外国订单_id。我想通过Invoice访问所有内容,这可能吗?
我尝试使用Has Many Through
,但这是A-> B-> C关系,我想我需要设置A-> B< -C Relationship。
用户表
| id |
发票表
| id | user_id |
订单表
| id | invoice_id | product_id |
产品表
| id |
我希望通过invoice
表格
发票模型
class invoice extends Model {
public function user() {
return $this->belongsTo('App\User');
}
public function order() {
return $this->belongsTo('App\Order');
}
}
订购模式
class Order extends Model
{
public function invoice()
{
return $this->belongsTo('App\Invoice');
}
}
产品型号
class product extends Model
{
protected $table = 'products';
public function order()
{
return $this->belongsTo('App\Order');
}
}
答案 0 :(得分:1)
根据架构,这就是你的模型的样子。
发票模型
class invoice extends Model {
public function user() {
return $this->belongsTo('App\User');
}
public function order() {
return $this->hasMany('App\Order');
}
public function products() {
return $this->belongsToMany('App\Product', 'order', 'invoice_id', 'product_id');
}
}
订购模式
class Order extends Model
{
public function invoice()
{
return $this->belongsTo('App\Invoice');
}
public function product()
{
return $this->belongsTo('App\Product');
}
}
产品型号
class product extends Model
{
protected $table = 'products';
public function orders()
{
public function products() {
return $this->belongsToMany('App\Invoice', 'order', 'product_id', 'invoice_id');
}
}
如果这不是您想要的,您可能需要更改架构。