Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
Merhabalar, laravelde sınırsız kategori mantıgı nedir örnegin sahibinden gibi emlak->konut->daire.. gibi gidiyor bunlara ayrı ayrı kategori yapıp model yapıp ilişkilendirmek oldukça zahmetli, bunun daha kolay bir yolu var mıdır?
Cevaplarınız için teşekkür ederim.
Tek tabloya kaydedersen sınırsız kategori elde edebilirsin ben sınırsız kategori işlemlerini tek tabloda yapıyorum bu sayede tek kategori ve tek model ile işlemlerimi hallediyorum şimdiye kadar herhangi bir sorun yaşamadım
Verilerin hiyerarşik olarak veritabanında tutulmasında birden fazla yol var. Nested set, adjacency list, closure table gibi. Bunları araştırabilirsiniz. Hepsinin avantajları ve dezavantajları var. Paket olarak baum yerine (artık güncellenmemektedir) aktif güncellenen benim de kullandığım şu paketi öneririm:
https://github.com/lazychaser/laravel-nestedset
@mgsmus teşekkür ederim dediklerinizi araştırıp deneyecegim.
mgsmus yazdıVerilerin hiyerarşik olarak veritabanında tutulmasında birden fazla yol var. Nested set, adjacency list, closure table gibi. Bunları araştırabilirsiniz. Hepsinin avantajları ve dezavantajları var. Paket olarak baum yerine (artık güncellenmemektedir) aktif güncellenen benim de kullandığım şu paketi öneririm:
https://github.com/lazychaser/laravel-nestedset

Önerdigin repo çok kullanılan güzel bir repo fakat tek sorun internette bi tane kaynak bulamadım, nasıl kullanacagımı anlayamadım bildigin kaynak var mı?
Verdiğim sayfada zaten dökümantasyonu mevcut, direk aşağıda kurulumu, nasıl kullanılacağı yazıyor ama kısaca bahsetmek gerekirse:

Category modelimiz olsun, bunun migrasonunu yazalım:
use Kalnoy\Nestedset\NestedSet;

Schema::create('categories', function (Blueprint $table) {
 $table->string('name');
 NestedSet::columns($table); // bu kısmı ekliyoruz
});
Category modeline de NodeTrait traitini ekliyoruz
use Illuminate\Database\Eloquent\Model;
use Kalnoy\Nestedset\NodeTrait;

class Category extends Model {
 use NodeTrait;
}
Şimdi işlemlere geçelim:
// Ana kategori oluşturalım
$bilgisayar = Category::create(['name' => 'Bilgisayar']);
$elektronik = Category::create(['name' => 'Elektronik']);
$beyazesya = Category::create(['name' => 'Beyaz Eşya']);

// Alt kategori ekleyelim
$masaustuBilgisayar = Category::create(['name' => 'Masaüstü Bilgisayarlar']);
$bilgisayar->appendNode($masaustuBilgisayar); // Bilgisayar kategorisinin alt kategorisi yapıyoruz

// Masaüstü Bilgisayar altına eklemek için kategori oluşturalım.
$desktop = Category::create(['name'=> 'Desktop']);
$allInOne = Category::create(['name'=> 'All In One']);
$oyuncuBilgisayari = Category::create(['name'=> 'Oyuncu Bilgisayarı']);

// Oluşturduğumuz kategorileri Masaüstü Bilgisayarın alt kategorisi olarak ekleyelim.
$masaustuBilgisayar->appendNode($desktop);
$masaustuBilgisayar->appendNode($allInOne);
$masaustuBilgisayar->appendNode($oyuncuBilgisayari);

// Şimdi bilgisayar kategorisi ve tüm alt kategorilerini istiyorsak
$bilgisayarKategorisi = Category::descendantsAndSelf($bilgisayar->id);
foreach($bilgisayarKategorisi as $bilgisayarlar) {
 echo $bilgisayarlar->name;
}


gibi. Dökümantasyona bakın, orada bir sürü yöntem var. Bazı şeyleri yapmanın bir çok yolu var, kullandıkça öğrenirsiniz.
Ellerine sağlık @mgsmus.
Teşekkürler.
tekrardan çok teşekkür ediyorum @msgmus
2 yıl sonra
mgsmus yazdıVerilerin hiyerarşik olarak veritabanında tutulmasında birden fazla yol var. Nested set, adjacency list, closure table gibi. Bunları araştırabilirsiniz. Hepsinin avantajları ve dezavantajları var. Paket olarak baum yerine (artık güncellenmemektedir) aktif güncellenen benim de kullandığım şu paketi öneririm:
https://github.com/lazychaser/laravel-nestedset
Bu paketi https://github.com/cviebrock/eloquent-sluggable paketi ile kullandığımda şu şekilde bir hata alıyorum;
Trait method replicate has not been applied, because there are collisions with other trait methods on App\Category
İnternette araştırmalarım sonucu bir iki çözüme denk geldim, paketin reposunda (https://github.com/lazychaser/laravel-nestedset/issues/227#issuecomment-309682553) bu şekilde bir çözüm üretmişler, bu şekilde çözdüm. Fakat bu sefer türkçeleştirmek istediğimde şu hatayı aldım;
Argument 1 passed to App\Category::customizeSlugEngine() must be an instance of App\Slugify, instance of Cocur\Slugify\Slugify given, called in C:\xampp\htdocs\bakburdan\vendor\cviebrock\eloquent-sluggable\src\Services\SlugService.php on line 200
İlgili satır;
	public function customizeSlugEngine(Slugify $engine, $attribute) {
 return $engine->activateRuleset('turkish');
	}
Hataya bakılırsa Slugify $engine kısmında ise yanlış Slugify sınıfını import etmiş gibisiniz ama test etmeden söyleyemiyorum. \Cocur\Slugify\Slugify $engine şeklinde bir deneyin.
mgsmus yazdıHataya bakılırsa Slugify $engine kısmında ise yanlış Slugify sınıfını import etmiş gibisiniz ama test etmeden söyleyemiyorum. \Cocur\Slugify\Slugify $engine şeklinde bir deneyin.
Paketi kurmamisim, tesekkurler hocam.
3 yıl sonra

Kategorilerin tümünü blade sayfasında ağaç yapısı şeklinde nasıl gösterebiliriz ?

    mgsmus, tartışmayı kilitledi.