我正在尝试使用中间模型 BrandProduct 在产品和品牌模型之间建立关系,中间模型还包含一些其他信息例如 product_model 等
我的目的是使用其他制造商信息访问属于特定品牌的所有产品,并且我还希望使用其他信息访问特定产品的品牌。
我有一个名为{strong>产品的Model
,具有这些属性
另一个名为{strong> Brand 的Model
具有以下属性
还有一个名为 BrandProduct 且具有属性的中间体Model
我要分别注册品牌和产品,并通过 BrandProduct 模型(具有附加属性,例如 product_model )在它们之间建立关系。
Brand.php
模型包含:
public function products(){
return $this->hasMany('App\Models\BrandProduct');
}
Product.php
模型包含:
public function manufacturer(){
return $this->hasOne('App\Models\BrandProduct');
}
BrandProduct.php
模型包含:
public function data(){
return $this->belongsTo('App\Models\Product', 'product_id', 'id');
}
public function brand(){
return $this->belongsTo('App\Models\Brand', 'brand_id', 'id');
}
现在我可以通过
成功检索Product > Manufacturer
$p = Product::find(id)->manufacturer
但是我无法通过尝试获得反关系BrandProduct > Data
$p = BrandProduct::find(id)->data
类似地,我可以通过
检索所有Brand > Products
$p = Brand::find(id)->products
但是不能得到逆关系
$b = BrandProduct::find(id)->brand
最后,我想实现以下目标:
//For Brand > Products
$p = Brand::find(id)->products;
$product_model = $p[0]->model;
$product_name = $p[0]->data->name;
//For Product > Manufacturer
$p = Product::find(id)->manufacturer;
$product_model = $p->model;
$brand_name = $p->brand->name;
请告诉我我的方法有什么问题,除了这种关系,其他所有关系都可以正常工作。