我有FOSUser表,用户拥有数据类型数组的角色,它们以序列化形式保存在数据库中,我尝试做一个独特的查询,但它分别返回每一行,这是查询的样子(这是在用户存储库文件中)
public function getAllRoles()
{
$roles = $this->createQueryBuilder("u")
->select("DISTINCT u.roles");
return $roles->getQuery()->execute();
}
返回的值虽然需要更多的处理,但这是我用两个用户的样本数据的样子
Array
(
[0] => Array
(
[roles] => Array
(
[0] => ROLE_ADMIN
[1] => ROLE_TEST
)
)
[1] => Array
(
[roles] => Array
(
[0] => ROLE_TEST@
)
)
)
我想知道我是否可以获得只有3个项目的数组
array(ROLE1, ROLE2, ROLE3, ETC)
答案 0 :(得分:1)
你不能通过SQL,你需要使用以下内容处理PHP中的数据(快速和肮脏的例子)
public function getAllRoles()
{
$roles = $this->createQueryBuilder("u")
->select("DISTINCT u.roles");
$data = $roles->getQuery()->execute();
$roles = array();
foreach ($data as $row) {
$roles = array_merge($roles, $row['roles']);
}
return $roles;
}