- Düzenlendi
Selamlar,
Normal de ilişkisel bir tabloda nesneleri yukarıdan aşağı doğru hiyerarşik olarak rahat bir şekilde alabiliyoruz. Peki ya aşağıdan yukarı doğru almak istersek ? Yani node'un en alt elemanından başlayıp yukarı doğru parentları hiyerarşik olarak getirmek.
Aslında metod aşağıdaki örnekte sorunsuz bir şekilde çalışıyor ama kodu gördükten sonra neden konuyu açtığımı anlayacaksınız.
public function getParentCategoriesOfCategory(int $id): array
{
if ($id != 0) {
$category = $this->category::find($id);
array_push(self::$categories, $category->parentCategory);
if (isset($category->parentCategory)) {
$this->getParentCategoriesOfCategory($category->parentCategory->id);
}
}
return self::$categories;
}
Yukarıda gerçekleşen akış şu; id'yi alan metod, önce nesneyi sınıfın statik özellğine basıyor. Sonra eğer üst bir node varsa, tekrar metod çağrılıyor ve sınıfın statik özelliğine push etmeye devam ediyor.
Aslında eğer alt node'dan üste doğru değilde, üstten aşağı doğru bağlamları hiyerarşik almak isteseydik statik sınıf özelliği oluşturmadan yukarıdaki metoda benzer bir recursive metod yazıp sonucu kolayca alabilirdik. Ancak aşağıdan yukarı doğru hiyerarşiyi almak istemek statik özellik oluşturmaya zorluyor.
Benimde sorum tam burada devreye giriyor. Bu sorunu statik özellik veya yöntemler kullanmadan aşmanın bir yolunu bulabilir miyiz ? Denemelerim devam ediyor ama sizinde fikrinizi almak istedim.