Boş olan kategoriyi göstermeme işlemini nasıl yaparım?
kategoriler
id | name | parentId |
---|---|---|
1 | Mobilyalar | null |
2 | Masalar | 1 |
3 | Yemek Masaları | 2 |
4 | Çalışma Masaları | 2 |
5 | Giyim | null |
6 | T-Shirt | 4 |
Öz yinelemeli fonksiyon ile listeleyebildigim bir tablom var.
Bu tabloya göre, en üst kategori Mobilyalar ve Giyim. Alt kategoriler ise Yemek Masaları ve diğerleri...
urunler
id | urun_adi | kat_id |
---|---|---|
1 | 5 Kişilik Masa | 3 |
Ürünler tablomda bulunan ürün Yemek Masaları kategorisine ait bir ürün dolayısıyla ben yukarıdaki kategori ağacının içerisinde ürün olduğu için basmak, icerisinde ürün olmayan diğer kategori ağaçlarını ise basmamak istiyorum.
Daha açıklayıcı olmak gerekirse ürünler tablomda Giyim veya T-Shirt kategorisine ait bir ürün olmadığı için Giyim ve onun alt kategorisi olan T-Shirt kategori ağacını basmamak istiyorum.
Elde edilmek istenen
Mobilyalar
-Masalar
--Yemek Masaları
Fonkisyonum
function sinirsizKategori($elemanlar,$parentId = 0){
$cikti = array();
foreach ($elemanlar as $eleman) {
if($eleman['parentId'] == $parentId){
$cocuk = sinirsizKategori($elemanlar,$eleman['id']);
if($cocuk){
$eleman['cocuk'] = $cocuk;
}else{
$elaman['cocuk'] = array();
}
$cikti[] = $eleman;
}
}
return $cikti;
}
Sorum yanlış anlaşıldı sanırım. Null olan veya olmayan değerleri bularak nasıl yapılabilir anlamadım. Ben boş olan kategorileri göstermek istemiyorum derken değer olarak boş olan kategorilerden bahsetmiyorum. Join ile birlestirme yaptığımda içinde ürün olmayan kategoriler mantık olarak boş kategori oluyor bunlar gelmesin istiyorum, bunu da join ile yapabiliyorum ancak, bazi alt kategorilerin ust kategorileri de ver onlari nasil getirebilirim? Yani alt kategoride ürün mevcut
ise o kategorinin üst kategorisi de listelenmesi gerek.