我有三个角色:1. if (gender == 1)
maxHeartRate = 209 - (0.7 * ageInYears);
else
maxHeartRate = 214 - (0.8 * ageInYears);
System.out.println(String.format("Your max heart rate is %s beats per minute.",maxHeartRate));
2. Admin
3. Client
我有三个表:1. Store
2. users
3。roles
我如何获得所有具有role_user
角色的用户?
我尝试过
Client
我遇到以下错误。
不应调用非静态方法App \ Models \ User :: roles() 静态地
角色模型
$clients = User::roles()->where('App\Models\Role',Role::CLIENT)->get();
用户模型
class Role extends Model
{
public const ADMIN = 'Admin';
public const CLIENT = 'Client';
public const STORE = 'Store';
public function users()
{
return $this->belongsToMany('App\Models\User')->using('App\Models\UserRole');
}
}
答案 0 :(得分:4)
您可以使用whereHas()
方法进行操作。这是在查询中使用exists
限制关系的一种方式
$clients = User::whereHas('roles', function($role) {
$role->where('name', '=', Role::CLIENT);
})->get();
如果您也想获得该角色,请堆叠with()
方法
$clients = User::whereHas('roles', function($role) {
$role->where('name', '=', Role::CLIENT);
})->with(['roles' => function($role) {
$role->where('name', '=', Role::CLIENT);
}])->get();
答案 1 :(得分:3)
那是因为您试图调用Model类而不是实例上的roles
方法,这就是应该的方法
$clients = Role::whereName('client')->first()->users;