0

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

1 回答 1

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;
}
于 2013-07-05T03:30:42.203 回答