3

所以这基本上是我到目前为止得到的 sql 模型:

在此处输入图像描述

这就是它如何看待我的用户控制器(stackoverflow 格式):

if (Auth::user()->is('admin'))
                    {
                            if (Auth::user()->can('delete'))
                            {
                                    echo 'hurra!';
                            }
                    }

权限密钥可能看起来像这样

admin.delete 可能类似于 user.can.buy

现在我想知道它是否可以,我如何在方法中执行它:

public function is($roleName)
        {
                $role = $this->roles;

                if ($role->name == $roleName)
                {
                        return true;
                }

                return false;
        }

我觉得这个不错

public function can($permissionKey)
        {
                $permissions = $this->roles->permissions()
                        ->where('key', $permissionKey)
                        ->count();

                if ($permissions > 0)
                {
                        return true;
                }

                return false;
        }

对我来说看起来有点尴尬。这是我用雄辩的 orm 选择数据的正确方法吗?

提前致谢!

4

1 回答 1

0

好吧,我安装了一个分析器并检查了所有触发的 sql 查询:

选择 * from userswhere id= '1' 限制 1

选择 * from roleswhere id= '1' 限制 1

permissions从内部连接中选择 count(*) 作为聚合permission_roleon permissionsid= permission_rolepermission_id哪里permission_rolerole_id= '1' 和key= 'view.admin'

这对我来说看起来不错,所以我认为我这样做的方式还可以。

于 2013-01-29T13:33:01.750 回答