Laravel ile e-ticaret sistemi geliştireceğimde. Bunun için hazır bir paket kullanmamı önerir misiniz yoksa ben kendim mi yazmalıyım ? Bildiğiniz önerdiğiniz paket var mı ?
Teşekkürler
Kesinlikle önerinizi dikkate alacağımmgsmus yazdıBir de ürün varyantı konusunda bilgi sahibi misiniz bilmiyorum ama bu konuda bir öneride bulunmak isterim.
Biliyorsunuz bir ürünün birçok rengi, boyutu vs olabiliyor. Örneğin bir tshirtün S, M, L, XL boylarının olduğunu ve siyah, beyaz, baskılı şeklinde de 3 adet renk seçeneğinin olduğunu varsayalım. Bu durumda 12 adet ürün varyantı oluşmuş oluyor. Beyaz S, Beyaz L, Siyah S, Siyah L.... vs. Bunların stoklarının ve fiyatlarının ayrı tutulması gerekiyor çünkü Beyaz rengin L'si tükenebilir, XL siyahtan sadece 5 tane kalabilir, M beyaz %10 indirimli olabilir, bunların resimleri ve diğer bazı özellikleri de farklı olacaktır elbette. Burada esnek bir stok ve ürün yapısı oluşturmada kullanılan yöntem ise (SKU - Stok Keeping Unit diye geçer) her bir varyanta ürün kodu oluşturup sisteme alt ürün olarak ekletmek. Bu şekilde bir sistem kurduğunuzda üstteki örnek için 12 adet ürün kodu (SKU kodu) oluşmuş oluyor. Bu durumda 12 adet stok, fiyat, resim vs girmeniz gerekiyor. Buradaki önerim şu: Sistemi bu şekilde yazacaksanız ana ürüne stok ve fiyat bilgisi özelliği eklemeyin, ürün tek bile olsa, varyantı olmasa bile onun için bir varyant oluşturun. Yani ana ürün kaydı sadece tutucu/ana olarak işlev görsün, fiyat stok resim özellik ayrıntı vs varyanttan gelsin. Bu ileride yaşanacak bir çok karışıklığa ve soruna engel olacaktır.
Biz yandık zamanında, siz yanmayın :)
+----+------+---------------+
| 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.+----+------+------+
| 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.@mgsmus hocam ben bu glide paketini projeme bir türlü entegre edemedim. Kurulumda bilmem gereken ekstra birşey var mı acaba?mgsmus yazdıBenim bu tip sistemlerde en zorlandığım nokta her zaman hiyerarşik veridir, yani e-ticaret adına konuşursak sınırsız kategori-alt kategori sistemi. Ne yazık ki bu konuya bir paket dışında oturaklı bir çözüm bulabilmiş değilim. Hala SQL sorguları ve PHP düzeyinde neler yapılabilir araştırıyorum. Bu konuda kullandığım ve tavsiye etttiğim bu paket ise:
https://github.com/lazychaser/laravel-nestedset
Ürünler için resim işlemleri yapmanız gerekecek. Bunun için tavsiyelerim:
https://github.com/Intervention/image
https://github.com/thephpleague/glide
Bunların dışında bir paket önermiyorum, geri kalanını sizin yapabileceğinizi düşünüyorum. Bu tür sistemlerde çok fazla paket bağımlılığını sağlıklı bulmuyorum.
mgsmus hocam bilgilendirmeleriniz için çok teşekkür ederim. SKU konusunda https://laracasts.com/discuss/channels/general-discussion/custom-ecommerce-dynamic-product-variants linkindeki gibi şema daha mı mantıklı olur. Ayrıca stok takibi konusunda tavsiyeniz nedir. ilgili ürün varyantının stok adeti her seferinde göncellensin mi? Ya da +stok veya -stok olarak eklenip çıkarılabilsin mi? Umarım açıklayabilmişimdir. Saygılarımla
Buradaki şema benim anlattığıma benzer bir şema. Benim bahsetmediğim ise buradaki SKU_VALUES isimli tablo. sku_id üzerinden SKU kodunun oluşturulduğu değerlere ulaşmanızı sağlayan güzel bir yapı. Bu şemadan yola çıkabilirsiniz. Bende VARIANTS ve SKUS şeklinde iki tablo yok, bunları tek tabloda tutuyorum. Örnekte neden ayrı tabloda tuttuğunu anlamadım çünkü bir variant bir sku demek, birden fazla olması sözkonusu değil. Belki bir sebebi vardır.
Eğer ürünlerinizin barkodu yoksa mecburen +-stok yapacaksınız ya da sayı tutmak yerine var/yok şeklinde kontrol edeceksiniz. Ürünlerin barkodu varsa bunları ayrı bir tabloda product_id ve variant_id ile tutup satıldı/satılmadı şeklinde işaretlerek dinamik stok tutmanız lazım çünkü barkod demek satılan/satılacak her ürünün varlığını bilmeniz demek.
mgsmus Örnekte neden ayrı tabloda tuttuğunu anlamadım
Senin kadar laravel bilgim yok Abi ama yazdıklarından ve gördüğüm sistemlere dayanarak yazıyorum :
Orda aslında name vermiş type yazabilirdi. Muhtemelen senin anlattığın yapıya göre ve gördüğüm sistemlerde şöyle
varyant tablosu id varyant adı = [1,Size]
varyanlar [ id,variant_id,variant_name] =
[1,1,S]
[1,1,M]
[1,1,L]
gibi bu şekilde admin panelinde ürün eklerken örneğin giysi ekleyecekse varyan tipini size seçiyor alta bedenler geliyor mutlaka görmüşşündür. Aslında otomatize yapmayı düşünmüş diye düşünüyorum. Saygılarımı sunuyorum
mgsmus Geçtiğimiz aylarda bir projede sizin bu yorumda önerdiğiniz noktaya çile çekerek geldim. Keşke o zaman rastlasaydım yorumunuza. Yine de içim rahatladı görünce yorumu, çok teşekkürler
selam kolay gelsin
sku işlemini burda anlatıldıgı yöntem ile yaptım ama ürün detay kısmında takıldım mesela
1-Beden
XL, L, M
2-Renk
Kırmızı Sarı Yeşil
ürün detay kısmında xl bastıgında renklerde hangisinin stokda var yada yok ve o ilgili seçilen varyantın fiyat bilgisi vs çektirmemiz gerek tam burada kafam karıştı
kısaca: XL bastıgımda hangi renklerin oldugunu nasıl anlıycam tablolar ile ilişkiyi nasıl kurucam onu sormak istedim