Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 如何使用数组类型获取doctrine2字段的不同值_Symfony_Doctrine Orm_Fosuserbundle - Fatal编程技术网

Symfony 如何使用数组类型获取doctrine2字段的不同值

Symfony 如何使用数组类型获取doctrine2字段的不同值,symfony,doctrine-orm,fosuserbundle,Symfony,Doctrine Orm,Fosuserbundle,我有FOSUser表,用户有数据类型为array的角色,这些角色以序列化的形式保存在数据库中,我尝试执行不同的查询,但它会分别返回每一行,下面是查询的样子(这在用户存储库文件中) 虽然返回的值需要更多的处理,下面是我有两个用户的示例数据的情况 Array ( [0] => Array ( [roles] => Array ( [0] => ROLE_ADMIN

我有FOSUser表,用户有数据类型为array的角色,这些角色以序列化的形式保存在数据库中,我尝试执行不同的查询,但它会分别返回每一行,下面是查询的样子(这在用户存储库文件中)

虽然返回的值需要更多的处理,下面是我有两个用户的示例数据的情况

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;
}