我使用Laravel 5.1,并具有这四个数据库表查询数据透视表通过关系
posts
包含来自Facebook的职位。 posts
表有一个外键page_id
。这是一个表,其中包含所有的Facebook页面
pages
表。
category
表包含我项目中类别的数据,例如funny
,videos
等
category_page
是一个透视表既节约category_id
和page_id
我现在想要做的,是让所有的职位,已发表一个页面一个特定的类别。
所以,让我们假设我有
三页1:梅苏特·厄齐尔
2:多特蒙德
3:BMW
前两页是sports
类别和最后一个cars
。现在我想要获取sport
类别的网页发布的每篇文章。
我已经定义的关系,船舶
类页:
public function categories()
{
return $this->belongsToMany(Category::class);
}
类属:
public function pages()
{
return $this->belongsToMany(Page::class);
}
现在,我得到我的帖子
$topPosts = (new Post)->where('fb_created_time', '>', Carbon::today()->toDateTimeString())
->visible()
->orderBy('total_count', 'desc');
现在我想补充只筛选特定类别页面中的帖子。我设法从这个代码在这里的特定类别的页面
$pages = Page::with('categories')
->whereHas('categories', function ($query){
return $query->where('category_id', 1);
})->get();
但是,我会如何链接到帖子?或者它使用whereHas
甚至更好?这里最好的做法是什么?
尝试'(页面::与('职位') - >('类')....“ – mdamia