我有 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)
你不能通过 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;
}