web-dev-qa-db-ja.com

Laravel関係の列による雄弁なフィルター

Eloquent ORMを使用して、モデルを次のようにセットアップします。PostbelongsToManyCategory

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();

しかし、カテゴリ別にフィルタリングするのではなく、カテゴリをフィルタリングするためだと思います。

誰も私に道を教えてもらえますか?

23
iamjonesy

Vagrantボックスに今すぐアクセスできませんが、これでうまくいくと思います。

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

})->get();
47
petkostas