Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

orm - Laravel Eloquent Filter By Column of Relationship

Using the Eloquent ORM I have my models set up like so: Post belongsToMany Category

Post.php

public function categories()
{
    return $this->belongsToMany('Category', 'posts_categories');
}

I want to filter posts by a column of the categories relationship.

So I want to do something like:

$posts->where('categories.slug', '=', Input::get('category_slug'));

This doesn't work though.

I also tried:

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

$posts::with($with)->get();

But I thnk that's for filtering the categories not filtering BY the category.

Can anyone show me the way?

question from:https://stackoverflow.com/questions/20801859/laravel-eloquent-filter-by-column-of-relationship

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I can't access my Vagrant box right now, but I believe this should work:

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

})->get();

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...