2016-02-16 48 views
2

我需要您的幫助才能找到解決方案來創建此查詢。想象一下,我有2個表格:帖子和類別,以及數據透視表:category_post。檢索屬於類別列表的文章laravel

帖子:ID,標題,...

類:身份證,CATEGORY_NAME,...

category_post:POST_ID,CATEGORY_ID

現在,我要找回我想要的類別:

$categories = Category::whereIn('id', $array)->lists('id'); 

在此查詢後,我有一個類別ID列表,我只想檢索屬於這些類別的帖子。不僅屬於某個類別或另一個類別的帖子,而且只包含屬於所有這些類別的帖子。

我希望我能很好地解釋自己。 Regards

回答

0

您可以爲樞軸類註冊belongTo關係。 (提供CATEGORY_ID和POST_ID外鍵。)

類CategoryPost擴展雄辯{

protected $table = 'category_post'; 

public function posts() { 
    return $this->belongsTo('posts'); 
} 

public function categories() { 
    return $this->belongsTo('categories'); 
} 

}

現在,你可以調用

CategoryPost::with('posts')->whereIn('category_id', $categories)->groupBy('post_id)->get(); 
+0

它完美,我不得不添加groupBy('post_id')以刪除重複的條目。謝謝! –

+0

很高興幫助。 –

+0

我需要一件東西才能使它成功。添加havingRaw('count(*)> 1'),這樣我只能同時選擇屬於所有這些類別的帖子。 –