具有不同值,产品属性的多对多关系Laravel

时间:2019-10-22 01:08:04

标签: mysql laravel

我需要创建具有多对多关系的产品属性,但是属性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

预期结果是对一个产品具有多个属性,而这些属性对不同产品具有多个值。 希望有人能解决这个关系问题或启发我。反正比你还重要。

1 个答案:

答案 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();