在 laravel 中使用 eloquent 编写查询

write a query with eloquent in laravel

如何使用 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);
    }
}

如果您想使用 Eloquent,并查询任何实体以 return 仅在存在关系且满足条件的情况下获得结果,您可以使用带有子查询的 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();