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

时间:2013-07-04 23:47:17

标签: symfony doctrine-orm fosuserbundle

我有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)

1 个答案:

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