次のテーブル構造があるとします。
CREATE TABLE IF NOT EXISTS `roles` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
`description` varchar(255) NOT NULL,
`parent` int(11) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
子が最初に (下から) 返されるような方法でクエリを実行することは可能でしょうか。
1, user, Login privileges, granted after account confirmation, 17
2, admin, Administrative user, has access to everything., NULL
15, unverified, Users who have not validated their email address, NULL
16, verified, Users who have validated their email address, NULL
17, guest, A guest role, an anonymous visitor with no account, NULL
18, moderator, Role for doing staff duties, 1
addRole
目標は、子を追加する前にロールを追加する必要があるZend_Acl のメソッドにこれらをロードすることです。
私の現在の方法は、2 つのクエリを必要とする準最適 (そしておそらく間違っている) です。1 つはすべてのリーフ ノード (親が NULL の場合) を取得するためのもので、もう 1 つは親 (DESC) によって順序付けられた親を持つものを取得するためのものです。
どんな助けでも大歓迎です。