Aşağıdaki products tablosunda bir ürün. Fiyat ya da stok bilgisi yok
+----+------+---------------+
| id | code | name |
+----+------+---------------+
| 1 | P001 | Basic T-shirt |
+----+------+---------------+
Bu da o ürünün seçenekleri, yani varyantları, variants tablosunda yer alıyorlar. Her birinin kendine ait kodu, fiyatı stok bilgisi var:
+----+------------+------------+-----------------------+-------+-------+
| id | product_id | code | name | stock | price |
+----+------------+------------+-----------------------+-------+-------+
| 1 | 1 | P001-BYZ-M | Beyaz M Basic T-shirt | 10 | 15.99 |
| 2 | 1 | P002-BYZ-L | Beyaz L Basic T-shirt | 8 | 15.99 |
| 3 | 1 | P003-SYH-L | Siyah L Basic T-shirt | 2 | 13.99 |
+----+------------+------------+-----------------------+-------+-------+
Bu sayede her ürünün ayrı varyantını satabiliyorsunuz. XL bitti sadece L var, L'nin de sadece beyazı ve kırmızısı kaldı ama kırmızı olan %10 indirimli vs vs gibi çeşitlendirme yapabiliyorsunuz. Buna Stock Keeping Unit deniyor, kısaca SKU diye geçer. Benim tabloda code dediğim aslında SKU code olmuş oluyor. Onu oluşturmanın, kontrol etmenin yolları var.
Benim üstteki tavsiyem şu:
Bu şekilde diyelim ki kupa/mug satıyorsunuz. Her hangi bir seçeneği renk boyut vs yok, düz kupa, tek ürün. Bu durumda eğer products tablosuna stock price diye alan ekleyip varyantı olmayan ürünlerde stok ve fiyat gibi bilgileri products tablosuna ekletirseniz ileride işler karışıyor. Ben de diyorum ki ürün tek bile olsa ona bir tane varyant ekleyin. Yani şöyle olacak:
+----+------+------+
| id | code | name |
+----+------+------+
| 1 | P001 | Mug |
+----+------+------+
+----+------------+---------+------+-------+-------+
| id | product_id | code | name | stock | price |
+----+------------+---------+------+-------+-------+
| 1 | 1 | P001-1 | Mug | 15 | 33.69 |
+----+------------+---------+------+-------+-------+
Sattığınız products tablosunda kodu P001 olan ürün değil, variants tablosunda yer alan P001-1 kodlu ürün olmalı, products tablosundaki hiç bir ürün satılmamalı çünkü asıl satılan varyant.
laravel.io doğrudur, bilmiyorum, her yerde bir şeyler yazıyorum gördükçe.