2016-07-25 26 views
1

Wie kann ich leere Kategorien ausblenden, wenn ich abfragen, um sie anzuzeigen? Leere Kategorien sind diejenigen, die keine Produkte, die ihnen zugewiesen sind .. Hier ist mein ControllerVerstecken von leeren Kategorien in Laravel

public function showSubCats($categoryId) { 

     $subcats = SubCategories::where('category_id', '=', $categoryId)->get(); 
     return View::make('site.subcategory', [    
      'subcats' => $subcats 
     ]); 
} 

Hier ist der Ansicht

@if(count($subcats) > 0) 
    <div class="row"> 
     @foreach($subcats as $i => $subcategory) 

       // display categories 

     @endforeach    
@else 
     There is no products assigned to this category     
    </div> 

@endif 

Das ist mein Modell Unterkategorien

public function products() 
{ 
    return $this->hasMany('Product', 'category_id'); 
} 
public function subcategories() 
{ 
    return $this->hasMany('SubCategories', 'category_id'); 
} 
public function lowestProduct() { 
    return $this->products()->selectRaw('*, max(price) as aggregate') 
    ->groupBy('products.product_id')->orderBy('aggregate'); 
} 

In der Produkt Tabelle Ich habe Spalte, die sub_cat_id ist und hält Kategorie, in der zugeordnet ist. Wenn 0 ist, wird keiner Kategorie zugewiesen.

Wie kann ich jetzt leere Kategorien ausblenden?

+0

Sie sollten die whereHas() -Methode -https: //laravel.com/docs/4.2/eloquent#querying-relations –

Antwort

1

Sie sollten where zusätzlich zu Ihrem Modell verwenden

return $this->hasMany('Action')->where('sub_cat_id', 1);

Hinweis:

Ich glaube, dass Sie die Datensätze nehmen neeed nur das hat sub_cat_id als 1. Wenn es nicht ändern zu 0 oder entsprechend.

Hoffnung, dies hilft Ihnen

+0

Nicht nur 'sub_cat_id = 1 '... 1 dynamisch und speichert die sub_cat_id .. wenn 0 ist, verstecken Sie es einfach. Wenn is! = 0 show .. –

+0

Wohin soll ich das bringen? Return $ this -> hasMany ('Aktion') -> where ('sub_cat_id', 1); ' –

+0

Zu deinem' products() '. Ja, das kannst du auch so machen –