我正在建立一个电子商务网站,该网站具有Products with variation
(多种选择的产品),例如,一件T恤可以将variation/attribute
的{{1}}与以下{{1}分别为Color and Size
的}。
在Options
之前,我有以下White, Black, Blue and Large, Medium, Small
:
`
Variation and options
`
`
Eloquent Model
`
`
class Product extends Model
{
public $with = ['variations'];
public function variations(){
return $this->belongsToMany(\App\Variation::class, 'option_product_variations')
->withPivot(["id","unit_selling_cost"]);
}
}
`
`
class Variation extends Model
{
public $with = ['options','option_product_variations'];
public function options()
{
return $this->hasMany(\App\Option::class);
}
public function products(){
return $this->belongsToMany(\App\Product::class, 'option_product_variations');
}
public function option_product_variations()
{
return $this->hasMany(\App\Option_product_variation::class);
}
}
`
`
class Option extends Model
{
protected $fillable = ['variation_id','title','slug','remark'];
protected $primaryKey = 'id';
public $with = ['option_product_variations'];
public function variation()
{
return $this->belongsTo(\App\Variation::class);
}
public function option_product_variations()
{
return $this->hasMany(\App\Option_product_variation::class);
}
}
`
如何定义关系,以便在查询产品模型后可以加载与产品相关的所有变体和选项?
我希望为构建效率的Eloquent模型提供更好的建议。