2017-10-06 61 views
1

我試圖顯示父項和子類別上的項目數。到目前爲止,計數僅在子類別中可見,但僅在分配給父目錄的項目顯示0。我在Category模型父類別上未顯示項目數

public function addRelation($categoires) 
{ 

    $categoires->map(function($item, $key) 
    {    
     $sub = $this->selectChild($item->id); 
     $item->itemCount = $this->getItemCount($item->id , $item->parent_id); 
     return $item = array_add($item, 'subCategory', $sub); 
    }); 
    return $categoires; 
} 
public function getItemCount($category_id, $parent_id) 
{ 
    if($parent_id == 0) 
    { // for root-caregory 
     $ids = Category::select('id')->where('parent_id', $category_id)->get(); 
     $array = array(); 

     foreach ($ids as $id) 
     { 
      $array[] = $id->id; 
     } 
     return Item::whereIn('category_id', $array)->count(); 
    } 
    else 
    { 
     return Item::where('category_id', $category_id)->count(); 
    } 
} 

在我的刀片添加了這個在控制器

$Category = new Category; 
    $allCategories = $Category->getCategories(); 
    return view('home', compact('allCategories')); 

而且

@foreach($allCategories as $category) 
    <div class="card-body"> 
    <h4 class="card-title">{!!$category->title!!} <span class="badge badge-primary badge-pill">({!! $category->itemCount !!})</span></h4> 
    </div> 
@endforeach 

itemCount是(0)時,產品在Parent類別。

+0

有是你的邏輯問題!沒有任何情況下其他區塊將被執行,總是隻會執行第一個區塊! – Maraboc

+0

還有一件事,你可以將集合'$ ids'轉換爲像這樣的'$ ids-> toArray()'這樣的數組,它可以循環使用它的項目;並且你是否知道你應該做什麼? – Maraboc

+0

@Maraboc,否則執行塊。在foreach裏面,我有另一個涉及子類別的foreach。正如我所說的那樣,它正在按照我所說的那樣工作,這就是爲什麼我將它從問題中刪除的原因。不,我沒有計算出如何顯示主要類別中的項目數量。 – Peter

回答

0

Discution我們有那就是你想要一個simlpe查詢後只是做這樣的:

public function getItemCount($category_id) 
{ 
    return Item::where('category_id', $category_id)->count(); 
} 

或者,如果你有關係,你可以簡單地做這樣的:

public function addRelation($categoires) 
{ 

    $categoires->map(function($item, $key) 
    {    
     $sub = $this->selectChild($item->id); 
     $item->itemCount = $item->items()->count(); 
     return $item = array_add($item, 'subCategory', $sub); 
    }); 
    return $categoires; 
} 
+0

再次感謝您的幫助! – Peter

+0

@彼得看到對話! – Maraboc

+0

@Peter是問題[選擇並檢查用戶是否存在於laravel blade中的foreach沒有foreach](https://stackoverflow.com/questions/46951352/selecting-and-check-if-user-exist-in-table-沒有 - foreach-in-laravel-blade)仍然存在? – Maraboc