Search code examples
laravellaravel-5eloquentmany-to-many

Laravel many to many relationship need to execute a query to get users list where role_id = 5


I have the below tables

  1. users : id | name
  2. projects : id | name
  3. user_project : id | user_id | project_id

My Models contains

  1. User.php

    public function projects() { return $this->belongsToMany(Project::class); }

  2. Project.php

    public function users() { return $this->belongsToMany(User::class); }

In my controller file, I want to get a list of users using the User model whose role_id is 5.

Something like below

User::query()->roles(5);

*Help will be appreciated


Solution

  • Have you tried whereHas?

    User::whereHas('roles', function($q){
        $q->where('id', 5);
    })->get();
    

    This will only return users whose roles.id column equals 5.