I'm working on a laravel 5 application. I have 3 tables:
table A: 'users'
id | name
————————————————
1 | Dave
2 | Robet
3 | Jimmy
4 | Daniel
and Table B classroom_users
user_id | classroom_id
1 | 5
4 | 5
3 | 6
4 | 5
I need to return all users 'name' for classroom 5
Please let me know what is the best way to do that. Trough model or Database join
Any help appreciated.
Assuming you have models and its relationships will be defined as below:
Classroom Model:
public function users(){
return $this->belongsToMany(User::class,'classroom_users','classroom_id','user_id');
}
User Model:
public function classrooms(){
return $this->belongsToMany(UserClassrooms::class,'classroom_users','user_id','classroom_id');
}
Now, in controller you can retrieve the users belonging to the classroom id 5 as below:
$classroom_id = 5 ;//change this to the id you want
$users = Classroom::find($classroom_id)->users()->get();
Laravel has introduced Pivot tables, which works like this
return $this->belongsToMany('App\Role')->withPivot('column1', 'column2');
You can read more pivot on Official Docs