20

从 Symfony2 + Doctrine 开始。

我有一个包含用户对象(fos_user)的表,我的架构包含一个“数组”类型的角色列。

Doctrine 通过将它们从 php 'array' 序列化为 'longtext' (在 mysql 的情况下)来保存这种类型的字段。

因此,假设我将以下用户保存到数据库中:

User1: array(ROLE_ADMIN, ROLE_CUSTOM1)
User2: array(ROLE_ADMIN, ROLE_CUSTOM2)
User3: array(ROLE_CUSTOM2)

现在在我的控制器中,我想选择所有设置了 ROLE_ADMIN 的用户。有没有办法编写一个直接返回我User1User2的 DQL 查询?或者我是否需要获取所有用户让 Doctrine 反序列化角色列,然后为每个用户执行in_array('ROLE_ADMIN', $user->getRoles())

我已经搜索了手册的 DQL 部分,但到目前为止没有找到任何与我的需求相似的东西......

UPD:找到一个关于同一事物的问题,其中包含一个有效的查询代码

4

1 回答 1

13

您可以简单地使用LIKE本手册中描述的语句(是的,即使在序列化对象上也是如此)。

我建议您为角色创建一个实体类,并通过多对多关联将其与用户实体连接。

于 2012-10-29T17:46:43.260 回答