クエリしようとしている3つのテーブルは次のとおりです。
DB構造:
roles_permissions: id, role_id, permission_id
user_roles: id, name, user_id
permissions: id, name
SQLクエリ
SELECT ur.name AS role_name,perm.name AS perm_name FROM user_roles AS ur
INNER JOIN roles_permissions as p
ON ur.id=p.role_id
INNER JOIN permissions AS perm
ON p.permission_id = perm.id
WHERE ur.user_id='$account_id'
上記のクエリの結果
array(11) {
[0]=>
array(2) {
["role_name"]=>
string(5) "Owner"
["perm_name"]=>
string(12) "view project"
}
[1]=>
array(2) {
["role_name"]=>
string(5) "Admin"
["perm_name"]=>
string(12) "edit project"
}
[2]=>
array(2) {
["role_name"]=>
string(6) "Editor"
["perm_name"]=>
string(14) "create project"
}
[3]=>
array(2) {
["role_name"]=>
string(5) "Owner"
["perm_name"]=>
string(12) "view project"
}
[4]=>
array(2) {
["role_name"]=>
string(5) "Admin"
["perm_name"]=>
string(12) "edit project"
}
[5]=>
array(2) {
["role_name"]=>
string(6) "Editor"
["perm_name"]=>
string(14) "create project"
}
[6]=>
array(2) {
["role_name"]=>
string(5) "Owner"
["perm_name"]=>
string(12) "view project"
}
[7]=>
array(2) {
["role_name"]=>
string(6) "Editor"
["perm_name"]=>
string(12) "edit project"
}
[8]=>
array(2) {
["role_name"]=>
string(5) "Owner"
["perm_name"]=>
string(12) "view project"
}
[9]=>
array(2) {
["role_name"]=>
string(5) "Admin"
["perm_name"]=>
string(12) "edit project"
}
[10]=>
array(2) {
["role_name"]=>
string(6) "Editor"
["perm_name"]=>
string(14) "create project"
}
}
私がやろうとしているのはuser_roles
、特定のuser_idに割り当てられているすべてを選択し、からそのロールに割り当てられているアクセス許可IDを取得し、テーブルroles_permissions
から各アクセス許可の名前を取得することです。permissions
グループ化したいuser_roles.name
したがって、結果の配列は次のようになります。
array(3) {
["Owner"]=>
array(3) {
["perm_name"]=>
string(12) "view project"
["perm_name"]=>
string(12) "create project"
["perm_name"]=>
string(12) "edit project"
}
["Editor"]=>
array(2) {
["perm_name"]=>
string(12) "view project"
["perm_name"]=>
string(12) "edit project"
}
["Admin"]=>
array(3) {
["perm_name"]=>
string(12) "view project"
["perm_name"]=>
string(12) "create project"
["perm_name"]=>
string(12) "edit project"
}
}
ですから、誰かがそれを手伝ってくれるなら、それは素晴らしいことです。また、これから学ぶことを考えているので、私のためにそれを説明できれば、それは素晴らしいことです。
ありがとう
SQL FIDDLE:http ://sqlfiddle.com/#!2/a7954/1