如何获取具有数组类型的doctrine2字段的不同值

问题描述 投票:0回答:1

我有 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)
php symfony doctrine-orm fosuserbundle
1个回答
2
投票

你不能通过 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.