Giriş yapmadınız.

#1 24.05.2017 09:56:47

gwapseow
Üye
Kayıtlı: 24.05.2017
Mesajlar: 4

Laravel Sınırsız Kategori Mantıgı

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.

Son düzenleyen gwapseow (24.05.2017 09:57:28)

Çevrimdışı

#2 24.05.2017 10:28:46

loc
Üye
Yer: İstanbul
Kayıtlı: 08.06.2015
Mesajlar: 274
Website

Yanıt: Laravel Sınırsız Kategori Mantıgı

Çevrimdışı

#3 24.05.2017 12:06:11

mirimiran
Üye
Kayıtlı: 04.02.2016
Mesajlar: 242

Yanıt: Laravel Sınırsız Kategori Mantıgı

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

Çevrimdışı

#4 24.05.2017 12:55:47

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

Yanıt: Laravel Sınırsız Kategori Mantıgı

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

Çevrimdışı

#5 24.05.2017 13:14:57

gwapseow
Üye
Kayıtlı: 24.05.2017
Mesajlar: 4

Yanıt: Laravel Sınırsız Kategori Mantıgı

@mgsmus teşekkür ederim dediklerinizi araştırıp deneyecegim.

Çevrimdışı

#6 24.05.2017 19:48:34

gwapseow
Üye
Kayıtlı: 24.05.2017
Mesajlar: 4

Yanıt: Laravel Sınırsız Kategori Mantıgı

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ı?

Çevrimdışı

#7 25.05.2017 10:48:01

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

Yanıt: Laravel Sınırsız Kategori Mantıgı

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.

Son düzenleyen mgsmus (25.05.2017 10:48:24)

Çevrimdışı

#8 25.05.2017 11:36:50

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,478
Website

Yanıt: Laravel Sınırsız Kategori Mantıgı

Ellerine sağlık @mgsmus.
Teşekkürler.

Çevrimdışı

#9 26.05.2017 17:01:34

gwapseow
Üye
Kayıtlı: 24.05.2017
Mesajlar: 4

Yanıt: Laravel Sınırsız Kategori Mantıgı

tekrardan çok teşekkür ediyorum @msgmus

Çevrimdışı

#10 10.03.2019 11:44:45

bhdr
Üye
Kayıtlı: 09.06.2018
Mesajlar: 94

Yanıt: Laravel Sınırsız Kategori Mantıgı

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-n … -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');
	}

Çevrimdışı

#11 10.03.2019 19:13:33

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

Yanıt: Laravel Sınırsız Kategori Mantıgı

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.

Çevrimdışı

#12 10.03.2019 21:35:52

bhdr
Üye
Kayıtlı: 09.06.2018
Mesajlar: 94

Yanıt: Laravel Sınırsız Kategori Mantıgı

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.

Çevrimdışı

Forum alt kısmı