我需要创建具有多对多关系的产品属性,但是属性Value存在问题。例如:
Product->belongsToMany(App\Attribute)
Attribute->belongsToMany(App\Product)
现在,我需要将该属性设置为“颜色”,并将该颜色设置为“红色”,并将其从另一个表中获取。
所以我不知道如何建立这种关系。
Product->attributes->Color->red.
实际上,如果我这样做就可以了,但是所有产品当然都会带有该属性值“红色”,因此所有产品都将变成红色,这是不正确的。
我尝试过的简单方法(当然可以正常工作)没有数据透视表和简单的关系。 刚刚在产品表中添加了带有属性名称和值的列,但是这样做会把我的产品表转换成一个巨大的表,里面有很多属性,例如:
'name', 'description', 'price', 'color', 'size', 'warranty' and so on with too many attributes which is really unoptimized
预期结果是对一个产品具有多个属性,而这些属性对不同产品具有多个值。 希望有人能解决这个关系问题或启发我。反正比你还重要。
答案 0 :(得分:0)
模型产品
public function attributes()
{
return $this->belongsToMany(Attribute::class, 'product_attributes', 'product_id', 'attribute_id');
}
模型Arrribute
public function products()
{
return $this->belongsToMany(Product::class, 'product_attributes', 'attribute_id', 'product_id');
}
代码
$product = new Product();
$attributes = $product->attributes;
$productWithAttributes = $product->with('attributes')->get();