【发布时间】:2015-09-15 14:36:08
【问题描述】:
我正在使用 Laravel 5.1 并且有这四个数据库表
posts 包含来自 Facebook 的帖子。 posts 表有一个外键 page_id。这是参考
pages 表,其中包含所有 facebook 页面。
category 表包含我项目中类别的数据,例如funny、videos等
category_page 是一个数据透视表,它保存了category_id 和page_id
我现在想做的是获取所有帖子,这些帖子已由特定类别的页面发布。
所以,假设我有三页
1:梅苏特·厄齐尔
2:多特蒙德
3:宝马
前两页属于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 更好?这里的最佳做法是什么?
【问题讨论】:
-
试试
Pages::with('posts') -> with('categories')....
标签: php laravel eloquent laravel-5.1