如何使用Eloquent模型编写此查询?我需要获得具有管理员或卖家角色的用户。
$users = DB::table('users')
->where('users.verified' , 1)
->join('role_user' , 'role_user.user_id' , '=' , 'users.id')
->join('role' , 'role_user.role_id' , '=' , 'role.id')
->where('role.title' , 'seller')
->orWhere('role.title' , 'admin')
->get();
模型
class User extends Model
{
public function role()
{
return $this->belongsToMany(Role::class);
}
}
class Role extends Model
{
public function users()
{
return $this->belongsToMany(User::class);
}
}
答案 0 :(得分:4)
如果您想使用Eloquent,并查询任何实体只返回存在关系且符合条件的结果,您可以使用whereHas()方法和子查询。
User::where('verified', 1)
->whereHas('role', function($query) {
$query->whereIn('title', ['seller', 'admin']);
})->get();
反向使用相同的语法,具体取决于您在顶级所需的实体。
Role::whereIn('title', ['seller', 'admin'])
->whereHas('users', function($query) {
$query->where('verified', 1);
})->get();