Laravel

Laravel

Pascal Baljet

Eloquent provides an easy way to add a relationship count condition to a query. Say you have a User model and a Role model which are related to each other using a many-to-many relationship. Using Eloquent it is very easy to get all Users that have one or more Roles or doesn't have Roles at all:

UserModel::has('Roles')->get();

UserModel::doesntHave('Roles')->get();

This is really cool but there is more! You can actually add 'where clauses' to the count condition. This is handy if you want to fetch all user with a specific role, for example all admins:

UserModel::whereHas('Roles', function($query) {

$query->where('label', 'admin');

})->get();


UserModel::whereDoesntHave('Roles', function($query) {

$query->where('label', 'admin');

})->get();

I think this is a very elegant solution!

Report Page