Merhaba, Konuyu yanlış bir yerde açmış olabilirim. Eğer öyle bir şey olmuşsa affola. Laravel ile ilk defa proje geliştiriyorum. Bir şeyi öğrenmenin en iyi yolu, öğreneceğiniz işi direk uygulama yaparak öğrenmek. Bende bu zorlu sürece e-ticaret sitesi yapmak ile başladım. (Öğrenmek için zoru severim). Vaktinizi fazla almadan soruma geçmek istiyorum. Burada bulunan üstatlardan öğreneceğim çok şey var. Şimdiden teşekkür ederim.
products
id | Name
1 | Kazak
2 | Mont
variants
id | product_id | name
1 | 1 | Kırmızı S Beden Kazak
2 | 1 | Kırmızı M Beden Kazak
3 | 1 | Mavi S Beden Kazak
4 | 2 | Mavi M Beden Mont
attributes
id | Name
1 | Renk
2 | Beden
attribute_values
id | attribute_id | name
1 | 1 | Kırmızı
2 | 1 | Mavi
3 | 2 | S
4 | 2 | M
product_attributes (pivot)
product_id | variant_id | attribute_id | value_id
1 | 1 | 1 | 1
1 | 1 | 2 | 3
1 | 2 | 1 | 1
1 | 2 | 2 | 4
1 | 3 | 1 | 2
1 | 3 | 2 | 3
2 | 4 | 1 | 2
2 | 4 | 2 | 4
Tablo yapılarım bu şekilde. Ürünlerimi listelerken renklerine göre listeliyorum. Yani kaç çeşit renk tanımlanmışsa o kadar varyantlı ürünüm gözüküyor. Ürünleri varyant_id ye göre ürün detay sayfasına gönderiyorum. Ürün özelliklerini gösterirken product_attributes tablosundaki renk ve beden altına tüm value_id name verileri geliyor.
#product Model
public function variants()
{
return $this->hasMany(VariantsModel::class, 'product_id');
}
#variant Model
public function product()
{
return $this->belongsTo(ProductModel::class, 'product_id');
}
public function attributes()
{
return $this->belongsToMany(AttributesModel::class, 'product_attributes', 'variant_id', 'attribute_id');
}
#Attribute Model
public function attributeValues()
{
return $this->belongsToMany(AttributeValuesModel::class, 'product_attributes', 'attribute_id', 'value_id');
}
#variant Controller
$variant = VariantsModel::with('attributes.attributeValues')->findOrFail($id);
Saygılarımla