Orm 按关系列的Laravel雄辩过滤器
使用雄辩的ORM,我的模型设置如下: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')
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行,那么这将非常缓慢。那你怎么办?