Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 有没有办法查询数组字段是否包含Doctrine2中的某个值?_Php_Mysql_Symfony_Doctrine Orm - Fatal编程技术网

Php 有没有办法查询数组字段是否包含Doctrine2中的某个值?

Php 有没有办法查询数组字段是否包含Doctrine2中的某个值?,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,从Symfony2+理论开始 我有一个包含用户对象(fos_User)的表,我的模式中包含一个“array”类型的roles列 Doctrine通过将这些字段从php“array”序列化为“longtext”(在mysql中)来保存这种类型的字段 假设我将以下用户保存到DB中: User1: array(ROLE_ADMIN, ROLE_CUSTOM1) User2: array(ROLE_ADMIN, ROLE_CUSTOM2) User3: array(ROLE_CUSTOM2) 现在,在

从Symfony2+理论开始

我有一个包含用户对象(fos_User)的表,我的模式中包含一个“array”类型的roles列

Doctrine通过将这些字段从php“array”序列化为“longtext”(在mysql中)来保存这种类型的字段

假设我将以下用户保存到DB中:

User1: array(ROLE_ADMIN, ROLE_CUSTOM1)
User2: array(ROLE_ADMIN, ROLE_CUSTOM2)
User3: array(ROLE_CUSTOM2)
现在,在我的控制器中,我想选择角色设置为_ADMIN的所有用户。 有没有一种方法可以编写直接返回User1和User2的DQL查询? 或者,我是否需要获取所有用户,使其具有取消序列化角色列的原则,然后在_数组('ROLE_ADMIN',$user->getRoles())中为每个用户执行

我已经搜索过了,但到目前为止还没有找到任何与我的需求类似的东西


UPD:找到了一个大致相同的东西,其中包含一个工作查询代码

您可以简单地使用本手册中描述的
语句(是的,甚至在序列化对象上)


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

的确如此。这似乎是唯一的办法。找到一个现有问题,该问题具有有效的精确查询:。如果我不依赖于在DB中存储角色的FOSUserBundle,那么使用多对多将是一种选择:)谢谢链接:D