Улучшение отношений - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь создать систему значений атрибутов сущностей в моем проекте.Я работаю в Laravel.

Я пытаюсь сделать следующее:

Продукты, экв.Автомобиль может иметь множество атрибутов,

Продукт: Цвет автомобиля: Красный, Зеленый, Синий Тип: Хэтчбек, Седан

Мне нужно установить хорошие отношения в базе данных.Моя база данных:

products
=========
id | title   | description | Price
--------------------------------------------
1  | Audi    |     Car     | 2500

attributes
==========
id | name
----------
1  | Color

attribute_values
=================
id | attribute_id | value
--------------------------
1  |       1      | Blue
2  |       1      | Green

product_attribute
=================
id | product_id | attribute_id | value_id
-------------------------------------------
1  |     1      |      1       |    1 
2  |     1      |      1       |    2

Мои отношения

Продукт:

public function attributes(){
            return $this->hasMany(ProductAttribute::class, 'product_id', 'id');
    }

Атрибут:

public function values(){
       return $this->hasMany(AttributeValue::class, 'attribute_id');
}

Product_Atribute:

public function attribute(){
    return $this->belongsTo(Attribute::class, 'attribute_id');
}
public function value(){
     return $this->belongsTo(AttributeValue::class, 'value_id');
}

И моя функция показывать все предложения со значениями:

$x = Product::find(1);
    foreach($x->attributes as $attr){
        echo $attr->attribute->name;
        foreach($attr->attribute->values as $att){
            echo $att->value;
        }
    }

Что я получаю:

Цвет: синий, зеленый Цвет: синий, зеленый

Почемучерт возьми, это дважды?!

...