• Uyarı

Soru laravel ürün varyasyon kurgusu

kartal

New member
#1
merhabalar ürün varyasyon kurgusu yapmaya çalışıyorum. Eksik kaldığım ve hatalı yaptığım işlemleri belirtirseniz sevinirim. Laravelde yeniyim, belirli bir aşamaya kadar getirebildim, viewde nasıl göstermeliyim, model ve controller dosyama daha nasıl eklemeler yapabilirim, yardımcı olursanız sevinirim. Kavrayabilmem için kod yapıma göre kod örneği paylaşabiirseniz çok mutlu olurum.

Github repom kodlar buradadır arkadaşlar, saygılarımı sunuyorum,yardımlarınızı bekliyorum


Resim 2
 

impROS

Member
Yönetici
Laravel Artisan
#2
Merhabalar,


Ürünleri göstermek için expandable table kullanabilirsiniz... Genel ürün bilgileri olur, üzerine tıklanıldığında da aşağıya doğru açılarak varyantları listeler.. Veya varyantları bir modal içinde gösterebilirsiniz.. Eğer tek kategorili bir ilişki kuracaksanız şu tarzda bir şey yapabilirsiniz

Kod:
   public function up()
    {
        Schema::create('products, function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned();
            $table->string('product_name');
            $table->string('model_code');
            $table->string('brand_name')->nullable();
            $table->string('stock_code')->nullable();
            $table->string('category')->nullable();

            $table->string('description')->nullable();

            $table->timestamps();
            $table->softDeletes();

            $table->foreign('user_id')
                ->references('id')
                ->on('users')
                ->onDelete('no action');
    });
    }
Product Varyant için ise şöyle bir şeyler yapabilirsiniz..

Kod:
   public function up()
    {
        Schema::create('product_variants, function (Blueprint $table) {
            $table->increments('id');
            $table->integer('product_id')->unsigned();
            $table->string('barcode')->unique();
            $table->string('stock_code');

            $table->string('sku')->nullable();
            $table->string('upc')->nullable();
            $table->string('ean')->nullable();
            $table->string('jan')->nullable();
            $table->string('isbn')->nullable();
            $table->string('mpn')->nullable();
            $table->integer('quantity');
            $table->decimal('price', 8, 2);
            $table->decimal('special_price', 8, 2)->nullable();
            $table->tinyInteger('subtract_stock')->default(1);
            $table->integer('minimum_quantity');
            $table->tinyInteger('status')->default(1);
            $table->integer('critical_range');

            $table->integer('tax);

            $table->timestamps();
            $table->softDeletes();

            $table->foreign('product_id')
                ->references('id')
                ->on('products')
                ->onDelete('no action');

        });
    }
Ama e ticaret çok gerçek bir ürün olarak yapıldığında çok kapsamlıdır.. Burda vergi türlerini bile ayrı tabloya almanız gerekir ciddi bir şey yapmak istiyorsanız.. Ama öğrenme amaçlı ve belli bir kesim için iş gören bir şey yapacaksanız bu tarz içerikler şimdilik yeterli olacaktır..
 
Son düzenleme:

kartal

New member
#3
Merhabalar,


Ürünleri göstermek için expandable table kullanabilirsiniz... Genel ürün bilgileri olur, üzerine tıklanıldığında da aşağıya doğru açılarak varyantları listeler.. Veya varyantları bir modal içinde gösterebilirsiniz.. Eğer tek kategorili bir ilişki kuracaksanız şu tarzda bir şey yapabilirsiniz

Kod:
   public function up()
    {
        Schema::create('products, function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned();
            $table->string('product_name');
            $table->string('model_code');
            $table->string('brand_name')->nullable();
            $table->string('stock_code')->nullable();
            $table->string('category')->nullable();

            $table->string('description')->nullable();

            $table->timestamps();
            $table->softDeletes();

            $table->foreign('user_id')
                ->references('id')
                ->on('users')
                ->onDelete('no action');
    });
    }
Product Varyant için ise şöyle bir şeyler yapabilirsiniz..

Kod:
   public function up()
    {
        Schema::create('product_variants, function (Blueprint $table) {
            $table->increments('id');
            $table->integer('product_id')->unsigned();
            $table->string('barcode')->unique();
            $table->string('stock_code');

            $table->string('sku')->nullable();
            $table->string('upc')->nullable();
            $table->string('ean')->nullable();
            $table->string('jan')->nullable();
            $table->string('isbn')->nullable();
            $table->string('mpn')->nullable();
            $table->integer('quantity');
            $table->decimal('price', 8, 2);
            $table->decimal('special_price', 8, 2)->nullable();
            $table->tinyInteger('subtract_stock')->default(1);
            $table->integer('minimum_quantity');
            $table->tinyInteger('status')->default(1);
            $table->integer('critical_range');

            $table->integer('tax);

            $table->timestamps();
            $table->softDeletes();

            $table->foreign('product_id')
                ->references('id')
                ->on('products')
                ->onDelete('no action');

        });
    }
Ama e ticaret çok gerçek bir ürün olarak yapıldığında çok kapsamlıdır.. Burda vergi türlerini bile ayrı tabloya almanız gerekir ciddi bir şey yapmak istiyorsanız.. Ama öğrenme amaçlı ve belli bir kesim için iş gören bir şey yapacaksanız bu tarz içerikler şimdilik yeterli olacaktır..
Merhaba cevabınız için teşekkür ederim anca kodlarımı incelemediniz sanırım,çünkü kurguladığım yapı yukarıda paylaştığınız migrate kodlarından daha esnek bir yapıya sahip. Hatta veri gösterme kısmına ait görsellerimi de eklemiştim,sadece viewde kayıt ,güncelleme yaparken nasıl ypaılıyor onu kurgulayamıyorum. Sonutça birde fazla alt varyasyon var, kayıt eklerken bunlar nasıl ekleniyor,güncellenirken alt varyasyonlar nasıl güncelleniyor bunları görmek istiyorum,bir türlü mantık kuramadığım yer burası. Bunlarla ilgili laravel ecommerce scriptlerine baktım githubda hepsi moduler yapıya geçmiş hlaiyle yeni başlamış birisi olarak pek kavrayamıyorum, ve önümde bu konuyla alakalı pek fazlada örnek yok gibi görünüyor. Lütfen beni yanlış anlamayın
 

impROS

Member
Yönetici
Laravel Artisan
#4
Projeyi indirip detaylı bakmadım, ama migrasyon dosyalarına baktığımda sadece şunları yaptığınızı gördüm:

Kod:
      Schema::create('products', function (Blueprint $table) {      
 
            $table->bigIncrements('id');      
 
            $table->string('name');      
 
            $table->string('code');      
 
            $table->timestamps();      
         });
Kod:
       Schema::create('product_variants', function (Blueprint $table) {      
 
            $table->bigIncrements('id');      
 
            $table->string('name');      
 
            $table->string('code');      
 
            $table->string('sku');      
 
            $table->decimal('price',10, 3);      
 
            $table->unsignedBigInteger('product_id');      
 
            $table->timestamps();      
 
            $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');      
         });
Kod:
   Schema::create('sku_products', function (Blueprint $table) {      
 
            $table->bigIncrements('id');      
 
            $table->unsignedBigInteger('product_id');      
 
            $table->unsignedBigInteger('variant_id');      
 
            $table->timestamps();      
 
            $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');      
 
            $table->foreign('variant_id')->references('id')->on('product_variants')->onDelete('cascade');      
 
      
         });
Sku için neden ayrı bir tablo açtınız tam bilmiyorum ama çok esnek ve detaylı bir yapı göremedim malesef..
Kayıt eklerken genel bilgi ürünlerini ayrı, varyasyonları ayrı şekilde ekleyip güncelleyebilirsiniz.. İşinize yarar mı bilmiyorum ama ufak bir kaç örnek vereyim mesela..

Ürün Ekleme:
Kod:
  public function store(Request $request)
    {
            $product = new  Product();
            $product->name= $request->name;
            $product->code= $request->code;
            $product->save();

           $product_variant = new  ProductVariant();
           $product_variant ->product_id =$product->id;
           $product_variant->sku=$request->sku;
           $product_variant->price=$request->price;
          $product_variant->save();
    }
Ürün Güncelleme için ise:
Kod:
  public function update(Request $request)
    {
            $product = Product::find(request->product_id);
            $product->name= $request->name;
            $product->update();

           $product_variant = ProductVariant::find($request->product_variant_id)
           $product_variant->price=$request->price;
          $product_variant->update();
    }
Şeklinde kullanabilirsiniz.. Eğer full örnek istiyorsanız komple tüm kodları burada ayrı ayrı yazmak çok uzun süreceği için isterseniz Şu kaynaklara bakabilirsiniz:
https://www.larashout.com/products-section-part-1
https://www.mobilhanem.com/laravel-eloquent-crud-islemleri/