Giriş yapmadınız.

Duyuru

TÜRKÇE KİTAP DUYURUSU:
Laravel 5 : Laravel 5.1 Güzelliği (Türkçe)
Vue.js 2 : Vue.js 2 Majesteleri (Türkçe)

#1 11.02.2019 15:29:59

GkyKrkc
Üye
Yer: Seyyah
Kayıtlı: 04.04.2017
Mesajlar: 235

Ürün ve Ürün detay tablolarının oluşumu

Merhabalar kolay gelsin arkadaşlar, daha önce mgsmus üstadım formda bir yerde bahsetmişti ama bulamadım o yüzden tekrar soruyorum kusura bakmayın, e ticaret mantığında bir site tasarlıyorum, ürün ve datay kısımlarını ayrı tablolarda tutmak istiyorum fakat takıldığım bir nokta var, mesela kategorinin birisinde tshirt var burada ürün detay kısmında renk var beden var dar kesim gibi opsiyonlar var, başka bir kategoride ise küçük hediyelik eşyalar gurubu var, ürün detay kısmında ise ebatlar var, renk var, yani kategoriye göre ürün detay kısımları değişiyor bunun veritabanı ilişkisini daha kullanışlı olması açısından sizce nasıl oluşturmalıyım.

Son düzenleyen GkyKrkc (11.02.2019 15:39:05)

Çevrimdışı

#2 11.02.2019 15:45:01

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,496
Website

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

Şurada kısaca bahsetmiştim:
http://forum.laravel.gen.tr/viewtopic.php?id=2771

Genel olarak buna SKU (Stok Keeping Unit) deniyor. Uzun bir konu olduğu için kendiniz önce araştırmanız gerekiyor.

Çevrimdışı

#3 11.02.2019 17:49:12

neri
Üye
Kayıtlı: 24.07.2018
Mesajlar: 29

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

mgsmus yazdı:

Şurada kısaca bahsetmiştim:
http://forum.laravel.gen.tr/viewtopic.php?id=2771

Genel olarak buna SKU (Stok Keeping Unit) deniyor. Uzun bir konu olduğu için kendiniz önce araştırmanız gerekiyor.

Ben inceledim ve tam da olması gerektiği gibi anlatmışsın üstad. Yalnız e-ticaret sisteminde önemli olan, ürün özelliklerinin müşteri tarafından dinamik olarak belirlenmesi ve bunun filtreleme de kullanılması. Bunun için nasıl bi çözüm buldunuz smile Her müşteri ve sektöre göre özel mi çalışıyorsunuz yoksa dinamik bir altyapınız mı var ?

Çevrimdışı

#4 11.02.2019 22:31:17

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,496
Website

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

Category - Ürün kategorileri
Product - Ürünler
ProductOption - Ürün seçenekleri. Ör: Renk, Boyut, Beden vs
ProductOptionValue - Ürün seçenek değerleri. Örneğin beden seçeneği için XS, S, M, L, XL, XXL
ProductAttribute - Ürün özellikleri. Ör: Kumaş tipi (Genellikle fiyatı etkilemez)
ProductAttributeValue - Ürün özellikleri değerleri. Ör: Kumaş tipi için Pamuklu, Yünlü, Elyaf (Genellikle fiyatı etkilemez)
ProductVariant - Ürün varyantları. Örneğin L beden kırmızı renk pamuklu t-shirt
Pivots\ProductCategory - Hangi ürün hangi kategorilerde yer alıyor, bunu tutan pivot
Pivots\ProductOption - Hangi ürün hangi seçeneklere sahip, bunu tutan pivot
Pivots\ProductAttribute - Hangi ürün hangi özelliklere sahip, bunu tutan pivot

Bu şekilde bir yapı ile basit anlamda dinamik bir şekilde seçenek ve özellik girişi yapılabilir, varyantlar oluşturulabilir.

Filtreleme için ise, örneğin özelliklere göre, Product modelini Pivots\ProductAttribute üzerinden (JOIN) ProductAttributeValue ile birleştirip (JOIN) filtreleme yapılabilir.

Bazen ayrı bir tabloda product_id, attribute_id, attribute_value_id, option_id, option_value_id şeklinde karma bir veri de tutulur. Filtreleme gibi bazı işlemlerin kolay yapılmasını sağlar.

Teorik olarak konuşulması zor bir konu. Bir yerden başlamanız lazım ki elinizde sonuçlar oluşabilsin.

Çevrimdışı

#5 11.02.2019 23:05:54

neri
Üye
Kayıtlı: 24.07.2018
Mesajlar: 29

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

mgsmus yazdı:

Category - Ürün kategorileri
Product - Ürünler
ProductOption - Ürün seçenekleri. Ör: Renk, Boyut, Beden vs
ProductOptionValue - Ürün seçenek değerleri. Örneğin beden seçeneği için XS, S, M, L, XL, XXL
ProductAttribute - Ürün özellikleri. Ör: Kumaş tipi (Genellikle fiyatı etkilemez)
ProductAttributeValue - Ürün özellikleri değerleri. Ör: Kumaş tipi için Pamuklu, Yünlü, Elyaf (Genellikle fiyatı etkilemez)
ProductVariant - Ürün varyantları. Örneğin L beden kırmızı renk pamuklu t-shirt
Pivots\ProductCategory - Hangi ürün hangi kategorilerde yer alıyor, bunu tutan pivot
Pivots\ProductOption - Hangi ürün hangi seçeneklere sahip, bunu tutan pivot
Pivots\ProductAttribute - Hangi ürün hangi özelliklere sahip, bunu tutan pivot

Bu şekilde bir yapı ile basit anlamda dinamik bir şekilde seçenek ve özellik girişi yapılabilir, varyantlar oluşturulabilir.

Filtreleme için ise, örneğin özelliklere göre, Product modelini Pivots\ProductAttribute üzerinden (JOIN) ProductAttributeValue ile birleştirip (JOIN) filtreleme yapılabilir.

Bazen ayrı bir tabloda product_id, attribute_id, attribute_value_id, option_id, option_value_id şeklinde karma bir veri de tutulur. Filtreleme gibi bazı işlemlerin kolay yapılmasını sağlar.

Teorik olarak konuşulması zor bir konu. Bir yerden başlamanız lazım ki elinizde sonuçlar oluşabilsin.

Fikir vermesi açısından güzel bir yol haritası kendi adıma teşekkür ediyorum.

Çevrimdışı

#6 12.02.2019 07:53:18

GkyKrkc
Üye
Yer: Seyyah
Kayıtlı: 04.04.2017
Mesajlar: 235

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

Üstad çok teşekkür ederim. eline sağlık,  aslında bu tür konularda görsel bir video hazırlasan da bizlerde satın alsak, yani laraveli en baştan anlatan videolar olmasına gerek yok, zaten piyasada oldukça var, önemli olan bu tür detay kısımların anlatıldığı ileri laravel videoları, örneğin  sınırsız kategorileme ve görsel kısmı, socket.io redis, notification, pusher, rest-api gibi 10-15 başlığa değinsen harika olur. udemy üzerinden oluşturabilirsin bizlerde oradan satın alma yaparız,Laravel Türkiye ailesi olarak  çok faydalı bir şey olur, bu sayede bizlerde yavaş yavaş senin yükünü alırız formda bir kaç soru cevaplayacak noktaya geliriz sayende,  bir düşün derim smile) fikrime katılan arkadaşlar bu mesaja desteğinizi bekliyorum..

Çevrimdışı

#7 12.02.2019 08:48:48

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 394

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

oo çok ustalık gerektirecek bir kurgu bu.İleriye dönük komplex düşünmeniz lazım.İşin esasında varyasyon oluşturulacak bir kombine sistemdir bu.
Ornegin :

bir ürün var ve bu urunun varyasyonlarını belirlemeniz gerekir.Ve bu varyasyonlar ileriye donuk macroable olması lazım yani genişletilebilir tarzda olması gerekir.@mgsmus konuyu cok iyi yazmıs aslında verdiği linke bakarsanız..Yani urunun en once varyasyonlarını belirlemen lazım bunu da kombine edip kombinasyonlarını baska bir tabloda tutmanız gerekir.

$product= 'Iphone x';
    $variations = array(
    'color' => array('black', 'white'),
    'memory' => array('16GB', '32GB', '64GB')
    );

varyasyonları

array(
0 => 'iphone x - black, 16GB',
1 => 'iphone x  - black, 32GB',
2 => 'iphone x  - black, 64GB',
3 => 'iphone x  - white, 16GB',
4 => 'iphone x  - white, 32GB',
5 => 'iphone x  - white, 64GB',
);

bu varyasyonları baska bir tablo stock satılabilir mi satılamaz mı fiyatı kac para,kampanyası var mı yok mu. stockta olsa bile satışa acık mı kapalı mı gibi geniş caplı bir field olusturup projenizi buna göre adapte etmeniz gerekecektir.

En onemli husus bu varyasyonlar 1.ci yazdıgım array ile macroable olmalı.yani 1.ci yazılan genişletildiğinde otomatik kombinasyon calıstırılıp varyasyon tablosu güncellenmeli..

zaten @mgmus hepsini anlatmıs.


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#8 12.02.2019 10:31:24

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,496
Website

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

Burada önemli noktalardan biri SKU kodunun oluşturulması ve kullanılması. Ürünü satın alırken ürün seçeneklerini seçtiğiniz detay sayfasında örneğin 2 tane select düşünün. İlki beden, ikincisi renk olsun. Önce bedeni seçiyorsunuz, diyelim ki L, ona göre altta renkler yükleniyor. Burada bir stok kontrolü yapılması lazım, SKU kodunu oluşturan seçenekler içerisinde L bedene sahip ürünlerden hangilerinin farklı renklerde stoğu var şeklinde. Mavi, beyaz var ama kırmızı bitmiş, o yüzden o seçilemiyor. Daha sonra maviyi seçiyorsunuz diyelim. Ürün id'si 11 (PRD00011), beden L'nin id'si 2 (L) ve Mavi rengin id'si 3 (MAVI) olsun. PRD00011-L-MAVI şeklinde bir SKU kodu oluştu. Bu durumda ürün id ve bu iki farklı seçeneğin id'sini verdiğinizde size PRD00011-L-MAVI kodunu getirecek bir tablo lazım. Bu koddan da satın alınmak istenen varyanta ulaşacaksınız. Bu oluşan SKU sizin varyantın tablosunda zaten var, varyant oluştururken oluşturdunuz, seçeneklerden bu koda her türlü ulaşabilmeniz lazım ki varyantı seçebilesiniz.

Bu benim düşündüğüm sistem. Daha kolay yolunu bilen varsa yazabilir.

Çevrimdışı

#9 12.02.2019 10:43:13

neri
Üye
Kayıtlı: 24.07.2018
Mesajlar: 29

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

Peki @deathisonitsway macrolardan bahsetmiş. Bu kadar sağlam bir OOP bilgisine sahip olmak gerekiyor mu böyle bir ürün tabloları yaklaşımı için ?

Çevrimdışı

#10 12.02.2019 12:28:04

GkyKrkc
Üye
Yer: Seyyah
Kayıtlı: 04.04.2017
Mesajlar: 235

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

mgsmus yazdı:

Burada önemli noktalardan biri SKU kodunun oluşturulması ve kullanılması. Ürünü satın alırken ürün seçeneklerini seçtiğiniz detay sayfasında örneğin 2 tane select düşünün. İlki beden, ikincisi renk olsun. Önce bedeni seçiyorsunuz, diyelim ki L, ona göre altta renkler yükleniyor. Burada bir stok kontrolü yapılması lazım, SKU kodunu oluşturan seçenekler içerisinde L bedene sahip ürünlerden hangilerinin farklı renklerde stoğu var şeklinde. Mavi, beyaz var ama kırmızı bitmiş, o yüzden o seçilemiyor. Daha sonra maviyi seçiyorsunuz diyelim. Ürün id'si 11 (PRD00011), beden L'nin id'si 2 (L) ve Mavi rengin id'si 3 (MAVI) olsun. PRD00011-L-MAVI şeklinde bir SKU kodu oluştu. Bu durumda ürün id ve bu iki farklı seçeneğin id'sini verdiğinizde size PRD00011-L-MAVI kodunu getirecek bir tablo lazım. Bu koddan da satın alınmak istenen varyanta ulaşacaksınız. Bu oluşan SKU sizin varyantın tablosunda zaten var, varyant oluştururken oluşturdunuz, seçeneklerden bu koda her türlü ulaşabilmeniz lazım ki varyantı seçebilesiniz.

Bu benim düşündüğüm sistem. Daha kolay yolunu bilen varsa yazabilir.

Üstad video çekim işine ne dedin ? ilk video çekim işine bu konudan giriş yapabiliriz mesela , Başlık "Ürün ve varyant tanımlama"  Müsaitlik durumunuzu bilmiyorum ama  sen veya forumda iyi olan bir kaç arkadaş beraberde organize edebilirsiniz  veya katkı sağlamak isteyenler çıkabilir şahsen ilk satın alma işlemini ben yapayım katkım olması için, bizim bu tür şeylere ihtiyacımız var, kaynakların bir çoğu yabancı  aslında ürün kategori ve varyant belirleme işleminin  bize bir videosunu çekip Laravel Türkiye formuna bir iyilik daha yapsan on numara iş olur smile

Son düzenleyen GkyKrkc (12.02.2019 12:28:57)

Çevrimdışı

#11 12.02.2019 13:02:25

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,496
Website

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

@GkyKrkc

Siz daha önce de böyle bir şeyler söylemiştiniz ama ne yapma isteğim ne de ayıracak vaktim var. Şu foruma bile sürekli bilgisayar başında olduğum için giriyorum. Belki ileride diyelim smile

Çevrimdışı

#12 12.02.2019 15:25:46

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 394

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

neri yazdı:

Peki @deathisonitsway macrolardan bahsetmiş. Bu kadar sağlam bir OOP bilgisine sahip olmak gerekiyor mu böyle bir ürün tabloları yaklaşımı için ?


gerekiyor tabi.sadece bununla değil.OOP bütün projelerinizde gerekiyor.ne kadar iyi tasarlarsanız kodunuzu o kadar kolay refactor edersiniz.
Aksi durumda laravelle yazmışsınız yazmamışsınız hiç farketmiyor.Kodunuz çöptür...


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#13 13.02.2019 11:01:48

GkyKrkc
Üye
Yer: Seyyah
Kayıtlı: 04.04.2017
Mesajlar: 235

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

araştırırken böyle bir link buldum belki bakmak istersiniz konudan bahsetmiş
https://www.youtube.com/watch?v=KZ_59Nn0vuU

Çevrimdışı

#14 13.02.2019 11:30:59

neri
Üye
Kayıtlı: 24.07.2018
Mesajlar: 29

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

GkyKrkc yazdı:

araştırırken böyle bir link buldum belki bakmak istersiniz konudan bahsetmiş
https://www.youtube.com/watch?v=KZ_59Nn0vuU

İzledim yaklaşım mantığını anlatan güzel bir video paylaştığın için sağol.

Not: video da 'size' diye bir kolon oluşturmuş o yüzden dinamik yapısını kaybetmiş @mgsmus arkadaşın paylaştığı tablo yapısı daha dinamik, o tablo yapısı gibi bir yapı üzerine odaklanmak daha mantıklı olur.

Çevrimdışı

#15 13.02.2019 13:27:19

GkyKrkc
Üye
Yer: Seyyah
Kayıtlı: 04.04.2017
Mesajlar: 235

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

neri yazdı:
GkyKrkc yazdı:

araştırırken böyle bir link buldum belki bakmak istersiniz konudan bahsetmiş
https://www.youtube.com/watch?v=KZ_59Nn0vuU

İzledim yaklaşım mantığını anlatan güzel bir video paylaştığın için sağol.

Not: video da 'size' diye bir kolon oluşturmuş o yüzden dinamik yapısını kaybetmiş @mgsmus arkadaşın paylaştığı tablo yapısı daha dinamik, o tablo yapısı gibi bir yapı üzerine odaklanmak daha mantıklı olur.

Kesinlikle katılıyorum, ürünlerin varyantları atanabilir olmalı üzerinde çalışıyorum

Son düzenleyen GkyKrkc (13.02.2019 13:27:41)

Çevrimdışı

#16 13.02.2019 15:17:40

GkyKrkc
Üye
Yer: Seyyah
Kayıtlı: 04.04.2017
Mesajlar: 235

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

https://github.com/Laracommerce/laracom birde böyle bir örnek buldum detaylı biraz sanırım incelemekte fayda var

Çevrimdışı

#17 15.02.2019 15:24:32

GkyKrkc
Üye
Yer: Seyyah
Kayıtlı: 04.04.2017
Mesajlar: 235

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

arkadaşlar merhaba, dinamik olarak aşağıdaki tablo mantığını buldum internetten, fakat bununun model - controller ilişkisini nasıl alabilirim ve view e gönderebilirim açıkcası sku kodu oluşturma bölümü ve  sku_values kısmı karışık geldi bu konuda bir fikri olan var mı? şimdiden teşekkür ediyorum.

products:
 ------------------
|  id  |    name   |
 ------------------
|  1   |  t-shirt  | 
 ------------------

variants:
 ------------------------------
|  id  |  product_id  |  name  |
 ------------------------------
|  1   |      1       |  size  |
 ------------------------------
|  2   |      1       |  color |
 ----------------------------

variant_options:
 ---------------------------------------------
|  id  |  product_id  |  variant_id  |  name  |
---------------------------------------------
|  1   |      1       |      1       |  small |
---------------------------------------------
|  2   |      1       |      1       |  large |
----------------------------------------------
|  3   |      1       |      2       |  red |
---------------------------------------------
|  4   |      1       |      2       |  blue |
----------------------------------------------

skus:
 -----------------------------------------------
|  id  |  product_id  |  sku  |  price  |  qty  |
------------------------------------------------
|  1   |      1       | 4xx01 |  140    |   5   |
------------------------------------------------
|  2   |      1       | 4xx02 |  140    |   10  |
------------------------------------------------
|  3   |      1       | 4xx03 |  160    |   8   |
------------------------------------------------
|  4   |      1       | 4xx04 |  160    |   15  |

sku_values:
 ----------------------------------------------------------------------
|  id  |  product_id  |  variant_id  |  variant_option_id  |  skud_id  |
-----------------------------------------------------------------------
|  1   |      1       |       1      |         1           |      1    |
-----------------------------------------------------------------------
|  2   |      1       |       2      |         3           |      1    |
-----------------------------------------------------------------------
|  3   |      1       |       1      |         1           |      2    |
-----------------------------------------------------------------------
|  4   |      1       |       2      |         4           |      2    |
-----------------------------------------------------------------------
|  5   |      1       |       1      |         2           |      3    |
-----------------------------------------------------------------------
|  6   |      1       |       2      |         3           |      3    |
-----------------------------------------------------------------------
|  7   |      1       |       1      |         2           |      4    |
-----------------------------------------------------------------------
|  8   |      1       |       2      |         4           |      3    |
-----------------------------------------------------------------------

Çevrimdışı

#18 Dün 22:57:26

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,496
Website

Yanıt: Ürün ve Ürün detay tablolarının oluşumu

Bu tablo isim açısından biraz karışık. Normalde skus tablosunun adı variants olmalıydı ama neyse, yapan kendince yapmış, nasıl kullanıldığı önemli. Biz karıştırabiliriz ama kendisi karıştırmıyordur.

Şimdi skus tablosuna bakın, id'si 1 olan kayıta. Bunun SKU kodu 4xx01. Şimdi de sku_values tablosuna bakın, skud_id değeri 1 olanlara, bu alan ile skus tablosu bağlanmış.

sku_values tablosunu skud_id alanına göre, değeri 1 olacak şekilde gruplarsanız iki tane variant_option_id elde edersiniz. Bunlardan ilki variant_id=1 ve variant_option_id =1 olan, yani size:small, diğeri ise color:red.

Yani bu ürün özellikleri beden S (small) ve renk Kırmızı (red). Bunu ayrı tabloda tutmuş ki siz ürün detay sayfasında
beden seçiminde S seçip, renk seçiminde Kırmızı seçip bu 4 değere (2 tane variant_id, 2 tane variant_option_id) bir de product_id ve özellik sayısını (2 adet, beden ve renk, variants tablosundaki product_id ye göre satır sayısı yani) eklerseniz
skud_id'ye yani skus tablosundaki kayda yani SKU kodu 4xx01 olan varyanta ulaşmış olursunuz.

Sanırım şu şekilde skud_id değerine ulaşabilirsiniz:

SELECT 
	*,
	(SELECT COUNT(*) FROM variants WHERE product_id = 1) AS variant_count
FROM sku_values 
WHERE product_id = 1 AND (
	   (variant_id = 1 AND variant_option_id = 1) 
	OR (variant_id = 2 AND variant_option_id = 3)
)
GROUP BY skud_id
HAVING COUNT(*) = variant_count

Çevrimdışı

Forum alt kısmı