2016-12-25 52 views
2

我有這樣的關係:如何統計有多少物品屬於哪個類別?

文章

public function category() 
    { 
     return $this->belongsTo('App\Models\Categories'); 
    } 

類別有翻譯

public function c_translations() 
    { 
    return $this->hasMany('App\Models\CategoryTranslations', 'category_id'); 
    } 

在文章中,我有類別ID,同樣在翻譯我已經CATEGORY_ID。那麼我怎樣才能算出每個類別有多少篇文章。任何建議?

$articles = Articles::all(); 
     foreach($articles as $article){ 
     $articles_category = Articles::where('id',$article->id)->withCount('category')->first(); 

     } 

我試過,但總能得到0所有類別

+0

你的問題不清楚。你能舉一些例子嗎? –

+0

我編輯了我的問題 – uzhas

+0

你的問題仍然沒有任何意義。你能舉一些你需要的例子嗎? –

回答

4

Category模型定義hasMany關係的數:

public function articles() 
{ 
    return $this->hasMany('App\Models\Article'); 
} 

然後你可以使用withCount查詢它:

$categories = Category::withCount('articles')->get(); 

它傳遞到您的視圖,然後您可以訪問沒有。的分類爲:

@foreach ($categories as $category) 
    <li>{{ category->title }}</li> 
    <li>{{ category->articles_count }}</li> 
@endforeach 
0

使用withCount()方法來算的關係。

Model::where('id', $id)->withCount('relation')->first(); 

如果你要計算從一個關係結果的數量,而無需實際加載它們,你可以使用withCount方法,這將放置{relation}_count列上你的最終模型。

+0

我編輯我的問題... – uzhas

0

我認爲你應該使用group by語句。 您選擇CATEGORY_ID,COUNT(*)FROM文章GROUP BY CATEGORY_ID 這將返回的每個物品CATEGORY_ID

相關問題