Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
  • YardımLaravel
  • Aynı Ürünü Birden Fazla Kategoride Göstermek Ve Bunu Görüntülemek.

Merhaba Arkadaşlar. Laravel İle Çok Yeni Tanıştım. Ve Mantığında Doğal Olarak Sendelemeler Yaşıyorum. Şunun Üzerinde Çalışıyorum. Bir Ürünü Birden Fazla Kategoriye Nasıl Ekleyebilirim. Hiçbir Düzgün Örenk Bulamadım Bu Arada :). Yani Tam Olarak Uarştığım Şey Bir İlan Girildi Ve Bu İlan Bir Çok Kategoriye Hitap Ediyor. Kategorileri Seçti Ve İlan Girildi. Kullanıcı İse İlanı Görüntülerken Herhangi Bir Yerde Hangi Kategorilerde Olduğunu Görmesi. Kodlarım İse Şöyle


category ve sub category form.
<div id="kategoriler">
 <legend>@lang('app.ad_info')</legend>
 <div class="form-group {{ $errors->has('category')? 'has-error':'' }}">
 <label for="category_name" class="col-sm-4 control-label">@lang('app.category')</label>
 <div class="col-sm-8">
 <select class="form-control select2 style="width;" name="category">
 <option value="">@lang('app.select_a_category')</option>
 @foreach($categories as $category)
 @if($category->sub_categories->count() > 0)
 <optgroup label="{{ $category->category_name }}">
 @foreach($category->sub_categories as $sub_category)
 <option value="{{ $sub_category->id }}" {{ old('category') == $sub_category->id ? 'selected': '' }}>{{ $sub_category->category_name }}</option>
 @endforeach
 </optgroup>
 @endif
 @endforeach
 </select>
 {!! $errors->has('category')? '<p class="help-block">'.$errors->first('category').'</p>':'' !!}
 </div>
 </div>
 <div class="form-group">
 <label for="brand_select" class="col-sm-4 control-label">
 @lang('app.brand')
 </label>
 <div class="col-sm-5 {{ $errors->has('brand')? 'has-error':'' }}">
 <select class="form-control select2" name="brand" id="brand_select">
 @if($previous_brands->count() > 0)
 @foreach($previous_brands as $brand)
 <option value="{{ $brand->id }}" {{ old('brand') == $brand->id ? 'selected':'' }}>{{ $brand->brand_name }}</option>
 <input type="radio" value="personal" id="type_private" name="type">
 @endforeach
 @endif
 </select>


 {!! $errors->has('brand')? '<p class="help-block">'.$errors->first('brand').'</p>':'' !!}
 <p class="text-info">@lang('app.skip_brand_text') <span id="brand_loader" style="display: none;"><i class="fa fa-spin fa-spinner"></i> </span>
 </p>
 </div>
 </div>
 </div>
 
ilginize şimdiden teşekkür ediyorum.
Bir ürünü birden fazla kategoride tutabileceğiniz bir veritabanı dizaynına sahip misiniz?

Hayır ise (yani ürün tablosunda category_id diye bir alanda tek bir kategori id'si tutuyorsanız):
Ortanca bir tablonuz olmalı. Bu tabloda iki alan olacak; product_id ve category_id. Ürün kategorilerini bu tabloda tutacaksınız:
+------------+-------------+
| product_id | category_id |
+------------+-------------+
| 2 | 5 |
| 2 | 6 |
| 2 | 7 |
+------------+-------------+
Bu tabloya göre id'si 2 olan ürün id'si 5,6 ve 7 olan kategoriye ait. Bu ilişki Eloquent'de many-to-many/belongsToMany olarak geçmekte:
https://laravel.com/docs/5.7/eloquent-relationships#many-to-many

Evet ise (tablonuz var ve Product ile Category modeli arasında gerekli ilişkileri kurdunuz):
Gördüğüm kadarıyla select2 kullanıyorsunuz. select2'nin multiple özelliği ile birden fazla kategori seçebilirsiniz:
https://select2.org/getting-started/basic-usage#multi-select-boxes-pillbox

multiple ile kategori id'leri içeren bir dizi alırsınız [5,6,7] şeklinde. many-to-many ilişkisinde bunları rahatlıkla ortanca tabloya eklemenize yarayacak olan attach, detach, sync yöntemleri mevcut:
https://laravel.com/docs/5.7/eloquent-relationships#updating-many-to-many-relationships

Yol göstereceğini düşünüyorum, iyi okumalar.
mgsmus yazdıBir ürünü birden fazla kategoride tutabileceğiniz bir veritabanı dizaynına sahip misiniz?

Hayır ise (yani ürün tablosunda category_id diye bir alanda tek bir kategori id'si tutuyorsanız):
Ortanca bir tablonuz olmalı. Bu tabloda iki alan olacak; product_id ve category_id. Ürün kategorilerini bu tabloda tutacaksınız:
+------------+-------------+
| product_id | category_id |
+------------+-------------+
| 2 | 5 |
| 2 | 6 |
| 2 | 7 |
+------------+-------------+
Bu tabloya göre id'si 2 olan ürün id'si 5,6 ve 7 olan kategoriye ait. Bu ilişki Eloquent'de many-to-many/belongsToMany olarak geçmekte:
https://laravel.com/docs/5.7/eloquent-relationships#many-to-many

Evet ise (tablonuz var ve Product ile Category modeli arasında gerekli ilişkileri kurdunuz):
Gördüğüm kadarıyla select2 kullanıyorsunuz. select2'nin multiple özelliği ile birden fazla kategori seçebilirsiniz:
https://select2.org/getting-started/basic-usage#multi-select-boxes-pillbox

multiple ile kategori id'leri içeren bir dizi alırsınız [5,6,7] şeklinde. many-to-many ilişkisinde bunları rahatlıkla ortanca tabloya eklemenize yarayacak olan attach, detach, sync yöntemleri mevcut:
https://laravel.com/docs/5.7/eloquent-relationships#updating-many-to-many-relationships

Yol göstereceğini düşünüyorum, iyi okumalar.

öncelikle ilginize teşekkür ederim gayet güzel bir yardım ama laravel de çok yeni olduğum için görsel bir örnek olmayınca kafam çorba oluyor :). yinede bana çıkabilecek güzel bir yol teşekkür ederim.
kafamı karıştıran en büyük dert bu php kod örnekleri hangi dosyalar üzerinde sağlanmış. en dertli tarafım bu. yardımcı olurmusunuz acaba ?
Üstteki kodu nereden aldınız?
mgsmus yazdıÜstteki kodu nereden aldınız?
/public_html/fulleskiler_/resources/views/admin/create_ad.blade.php
den aldım şöyle burada multiple select ettim ama kategorileri seçiyorum ve kayıt ettiğimde sadece son seçtiğim id kayıt oluyor veritabanına
Nereden aldınız mı derken siz mi yazdınız yoksa başka birinin yaptığı bir şey mi diye sordum. İstediğiniz şeyi size anlatabilmem için oturup burada Laravel öğretmem lazım. Ayrıca proje bunu desteklemiyorsa bir çok yerde, veritabanı da dahil, değişiklik yapılması gerekecek.
Ne yazık ki istediğiniz, Laravel gibi rapid bazlı bir frameworkde bile anlatması zor bir olay, temelleri bilmeniz gerekiyor. Burada kendi projelerini geliştiren, temelleri bilen arkadaşlar için bile bazı sorulara cevap hazırlamam bir kaç saatimi alıyor.
İstediğiniz şey Laravel ya da PHP dışında ayrıca genel bir yaklaşım (bir ürünün birden fazla kategoriye ait olması). Bunu bir programlama dili ile uygulayabilmeniz için yaklaşımı da bilmeniz gerekiyor.

Bana göre seçenekleriniz:
1. Ben sadece bu istediğim yeter, başka bir şey istemiyorum diyorsanız;
a) Yapan kişiye ulaşmaya çalışmak
b) Laravel ile benzer iş yapmış ya da yapabilirim diyen birine yaptırmak
2. Öğrenmek istiyorum diyorsanız dökümanlardan ve bu forumdan faydalanarak adım adım öğrenmek
mgsmus yazdıNereden aldınız mı derken siz mi yazdınız yoksa başka birinin yaptığı bir şey mi diye sordum. İstediğiniz şeyi size anlatabilmem için oturup burada Laravel öğretmem lazım. Ayrıca proje bunu desteklemiyorsa bir çok yerde, veritabanı da dahil, değişiklik yapılması gerekecek.
Ne yazık ki istediğiniz, Laravel gibi rapid bazlı bir frameworkde bile anlatması zor bir olay, temelleri bilmeniz gerekiyor. Burada kendi projelerini geliştiren, temelleri bilen arkadaşlar için bile bazı sorulara cevap hazırlamam bir kaç saatimi alıyor.
İstediğiniz şey Laravel ya da PHP dışında ayrıca genel bir yaklaşım (bir ürünün birden fazla kategoriye ait olması). Bunu bir programlama dili ile uygulayabilmeniz için yaklaşımı da bilmeniz gerekiyor.

Bana göre seçenekleriniz:
1. Ben sadece bu istediğim yeter, başka bir şey istemiyorum diyorsanız;
a) Yapan kişiye ulaşmaya çalışmak
b) Laravel ile benzer iş yapmış ya da yapabilirim diyen birine yaptırmak
2. Öğrenmek istiyorum diyorsanız dökümanlardan ve bu forumdan faydalanarak adım adım öğrenmek
kesinlikle zor olduğuna inanın ki eminim ve sizede çok hak veriyorum. bunları böyle çözmek çok zor eğer isterseniz size up edebilirim incelemeniz açısından yada şöyle bu bu altyapıyı kullanıyorum https://demo.themeqx.com/classifieds/ öm den de size up ediyorum incelemeniz açısından. bana yardım ettiğiniz için teşekkür eder uğraştırdığım için özür dilerim.