2013-03-30 7 views
10

Zfc-userとzfc-rbacをZend Framework 2に実装する方法については、多数の「Getting Started」チュートリアルがあります。zfc-userとzfc-rbacのgithubページhttps://github.com/ZF-Commons)は明確で実装は非常に簡単です(チュートリアルの多くで述べたように)。私は、zfc-userとzfc-rbac(/ vendor/zf-commons/zfc- [user/rbac]/data /)の両方に必要なSQLスキームも見つけました。zfc-rbacデータベース集団を使用したZend Framework 2

zfc-userがすでにあなたのためにこれを設定しているので(http://example.com/user)、データベースへのユーザーの作成は簡単です。これまでのところすべて素晴らしい。今、私は役割を設定したいと思いますが、rbacテーブルを正しく設定する方法は私には分かりません。 zfc-rbacコンポーネントはZend Frameworkの一般的なモジュールであるため、これに関する情報が不足しています。

ロールベースのアクセス制御のプリンシパルを理解しています。アクセス許可のテーブルとアクセス許可とロールをリンクするテーブルの集計は明確ですが、それは私には分かりません。私はあなたが親の役割を持つ役割を持つことができることを理解していますが、 'parent_role_id'が 'role_id'でなければならないという外部キーの制約があるため、親の役割をテーブルに設定する方法がはっきりしません。

以下

(これはZFC-RBACが提供するSQLです)ロールテーブルのSQLです:代わりに外部キーが親の役割を追加することで

CREATE TABLE `rbac_role` (
    `role_id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `parent_role_id` int(11) unsigned NOT NULL, 
    `role_name` varchar(32) NULL, 
    PRIMARY KEY (`role_id`), 
    KEY `parent_role_id` (`parent_role_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

ALTER TABLE `rbac_role` 
    ADD CONSTRAINT `rbac_role_ibfk_1` FOREIGN KEY (`parent_role_id`) REFERENCES `rbac_role` (`role_id`); 

は不可能ですか?

INSERT INTO `rbac_role` (parent_role_id, role_name) VALUES (NULL, 'admin'); 

基本的に私の質問は(と私はこれを尋ねるのは非常に馬鹿だと思いますが)どのように親の役割の挿入のようですか?そして、私が提示したinsert文が実際に正しい場合、親役割を挿入する前に常に外部キーを削除する必要がありますか?

+8

私はSQLの専門家ではありませんが、この自己参照結合は偽と思われます。 'parent_role_id' HASを' NULL'にすることができます。そうしないと、最初のデータ行を挿入することはできません。 – Sam

+0

@Samと同意すると、 'parent_role_id'はnull可能でなければなりません – Crisp

+0

それは私が思ったことです。ありがとうございました。 zfc-rbacが外部キーを使ってcreate tableステートメントを提供しても、それは奇妙です。 –

答えて

0
次にあなたの作成し、テーブルを変更し

:parent_role_idがNULLではなく、NOT NULLであることを

CREATE TABLE `rbac_role` (
    `role_id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `parent_role_id` int(11) unsigned NULL, 
    `role_name` varchar(32) NULL, 
    PRIMARY KEY (`role_id`), 
    KEY `parent_role_id` (`parent_role_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 

お知らせ。 parent_role_idがNOT NULLの場合は、親を持つ必要があることを意味しますが、外部キーの参照は同じテーブルにあるので、親の行を挿入する方法はありません!

0

fyi:この問題は修正されました。 zfc-rbacのバージョン0.2.0はparent_role_idとしてNULL値を許可します

関連する問題