Symfony 如何使用数组类型获取doctrine2字段的不同值
我有FOSUser表,用户有数据类型为array的角色,这些角色以序列化的形式保存在数据库中,我尝试执行不同的查询,但它会分别返回每一行,下面是查询的样子(这在用户存储库文件中) 虽然返回的值需要更多的处理,下面是我有两个用户的示例数据的情况Symfony 如何使用数组类型获取doctrine2字段的不同值,symfony,doctrine-orm,fosuserbundle,Symfony,Doctrine Orm,Fosuserbundle,我有FOSUser表,用户有数据类型为array的角色,这些角色以序列化的形式保存在数据库中,我尝试执行不同的查询,但它会分别返回每一行,下面是查询的样子(这在用户存储库文件中) 虽然返回的值需要更多的处理,下面是我有两个用户的示例数据的情况 Array ( [0] => Array ( [roles] => Array ( [0] => ROLE_ADMIN
Array
(
[0] => Array
(
[roles] => Array
(
[0] => ROLE_ADMIN
[1] => ROLE_TEST
)
)
[1] => Array
(
[roles] => Array
(
[0] => ROLE_TEST@
)
)
)
我想知道我是否能得到只有3个项目的数组
array(ROLE1, ROLE2, ROLE3, ETC)
您不能通过SQL,您将需要用PHP处理数据,如下所示(快速而肮脏的示例)
我同意“脏”部分,但它对我起了作用,希望有一种不用php处理部分的方法。
array(ROLE1, ROLE2, ROLE3, ETC)
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;
}