如何在雄辩的ORM中使用此方法?

时间:2019-11-18 22:09:26

标签: php laravel eloquent

嗨!我是php的新手,laravel您可以通过替换此查询生成器来说明如何使用laravel Elouquet创建isAuthorized()方法吗

class User extends Authenticatable
{
    public function isAuthorized($object, $operation)
    {
        return Db::table('role_permissions')
            ->where('object', $object)
            ->where('operation', $operation)
            ->join('user_roles', 'user_roles.role_id', '=', 'role_permissions.role_id')
            ->where('user_roles.user_id', $this->id)
            ->exists();
    }
}

1 个答案:

答案 0 :(得分:0)

像这样创建模型。

public class RolePermission {
    public function UserRoles() {
        return $this->hasMany(UserRole::class, 'role_id', 'role_id');
    }
}

public class UserRole {

}

WhereHas可以查询关系,并且是替换联接的基石。

RolePermission::where('object', $object)
    ->where('operation', $operation)
    ->whereHas('UserRoles', function ($query) {
        $query->where('user_roles.user_id', $this->id)
    })     
    ->exists();