范围查询有多对多关系

时间:2017-09-22 12:53:41

标签: laravel octobercms

我创建了2个模型,“发布”和“类别”。这是一对多关系,效果很好。

我的表格如下:

  • alex_blog_posts:帖子与“title”,“已发布”等列存储...
  • alex_blog_categories:使用“title”,“parent_id”等列存储类别......
  • alex_blog_posts_categories:使用“post_id”,“category_id”列的帖子和类别之间存储关系的位置

我们假设我想过滤与名称相关的所有帖子:“类别1”

public function scopeFilterCategory($query) {
    $query->join(????); // My problem is to replace the ???
    $query->where('title', '=', 'Category 1');
    return $query;
}

我不熟悉10月和laravel,我被困在这里。对于laravel专家来说可能非常简单,但我需要一个有效的例子,因为我尝试过的所有事情都失败了:/

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

laravel有" whereHas":

https://laravel.com/docs/5.5/eloquent-relationships#querying-relationship-existence

在帖子模型上,您需要编写此查询:

$posts = Post::whereHas($relationName, function ($query) {
     $query->where('title', =, 'Category 1');
})->get();

$ relationName - 应该是定义模型中关系的函数的名称(等等:'类别')