Laravel有很多通过
Laravel has many through
我的table
products
- id
- name
product_variants
- id
- product_id
- color_id
product_colors
- id
- hex
我不想有这样的关系
Product::colors(); // get all the colors through variants
在我的 Product.php 模型中,我有
public function colors() {
return $this->hasManyThrough('App\Models\ProductColor', 'App\Models\Product', 'id', 'id', 'product_id', 'product_color_id');
}
这似乎不起作用。
作为旁注。在当前的 laravel 文档中,它给出了以下示例:
return $this->hasManyThrough(
'App\Post',
'App\User',
'country_id', // Foreign key on users table...
'user_id', // Foreign key on posts table...
'id', // Local key on countries table...
'id' // Local key on users table...
);
我认为评论不正确的地方。我的经验是本地键在外键之前。
看你的数据库好像颜色和产品的关系是多对多的,代码应该是
产品型号:
public function colors(){
return $this->belongsToMany('App\Models\ProductColor', 'product_variants', 'product_id', 'id')->withPivot('id');
}
产品颜色型号:
public function products(){
return $this->belongsToMany('App\Models\Product', 'product_variants', 'id', 'product_id')->withPivot('id');
}
或者,如果您想要更大的灵活性,请创建一个 ProductVariant 模型,并在 Product 和 ProductColor 上使用 hasMany 关系,并在 ProductVariant 内部使用两个 belongsTo,to Product 和 ProductColor
我的table
products
- id
- name
product_variants
- id
- product_id
- color_id
product_colors
- id
- hex
我不想有这样的关系
Product::colors(); // get all the colors through variants
在我的 Product.php 模型中,我有
public function colors() {
return $this->hasManyThrough('App\Models\ProductColor', 'App\Models\Product', 'id', 'id', 'product_id', 'product_color_id');
}
这似乎不起作用。
作为旁注。在当前的 laravel 文档中,它给出了以下示例:
return $this->hasManyThrough(
'App\Post',
'App\User',
'country_id', // Foreign key on users table...
'user_id', // Foreign key on posts table...
'id', // Local key on countries table...
'id' // Local key on users table...
);
我认为评论不正确的地方。我的经验是本地键在外键之前。
看你的数据库好像颜色和产品的关系是多对多的,代码应该是 产品型号:
public function colors(){
return $this->belongsToMany('App\Models\ProductColor', 'product_variants', 'product_id', 'id')->withPivot('id');
}
产品颜色型号:
public function products(){
return $this->belongsToMany('App\Models\Product', 'product_variants', 'id', 'product_id')->withPivot('id');
}
或者,如果您想要更大的灵活性,请创建一个 ProductVariant 模型,并在 Product 和 ProductColor 上使用 hasMany 关系,并在 ProductVariant 内部使用两个 belongsTo,to Product 和 ProductColor