Orm 按关系列的Laravel雄辩过滤器

Orm 按关系列的Laravel雄辩过滤器,orm,laravel-4,eloquent,Orm,Laravel 4,Eloquent,使用雄辩的ORM,我的模型设置如下:PostbelongtomanyCategory Post.php public function categories() { return $this->belongsToMany('Category', 'posts_categories'); } 我想按类别关系的列筛选帖子 所以我想做一些类似的事情: $posts->where('categories.slug', '=', Input::get('category_slug')

使用雄辩的ORM,我的模型设置如下:
Post
belongtomany
Category

Post.php

public function categories()
{
    return $this->belongsToMany('Category', 'posts_categories');
}
我想按类别关系的列筛选帖子

所以我想做一些类似的事情:

$posts->where('categories.slug', '=', Input::get('category_slug'));
但这不起作用

我还尝试:

$with['categories'] = function($query){ 
    $query->where('slug', '=', Input::get('category_slug'));
};

$posts::with($with)->get();
但我认为这是为了过滤类别,而不是按类别过滤


有人能给我指一下路吗?

我现在无法进入我的流浪汉包厢,但我相信这应该行得通:

$posts = Post::whereHas('categories', function($q)
{
    $q->where('slug', '=', Input::get('category_slug'));

})->get();

很好!不得不升级到LaravelV4.1,因为这是一个全新的特性。我花了好几个小时想弄明白,最后终于解决了这正是我所需要的!whereHas进行全表扫描。对于小表,这是好的,如果说(类别)有100000行,那么这将非常缓慢。那你怎么办?