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クエリをチェックしました:

select * from userswhere id= '1' limit 1

select * from roleswhere id= '1' limit 1

permissionsの内部結合からの集計としてcount(*)を選択しpermission_roleますpermissionsid= permission_rolepermission_idここでpermission_rolerole_id='1'およびkey='view.admin'

これは私には大丈夫に見えるので、私がやった方法は大丈夫だと思います。

于 2013-01-29T13:33:01.750 に答える