Я пытаюсь создать систему значений атрибутов сущностей в моем проекте.Я работаю в 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;
}
}
Что я получаю:
Цвет: синий, зеленый Цвет: синий, зеленый
Почемучерт возьми, это дважды?!