Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 381
iamjonesy Avatar asked Dec 27 '13 13:12

iamjonesy


1 Answers

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(); 
like image 197
petkostas Avatar answered Sep 30 '22 02:09

petkostas