使用学说用PHP数组查询数组类型

时间:2018-12-17 12:32:47

标签: php doctrine symfony4

我需要通过使用学说来用php数组查询mysql数组类型。

我的数据库列是 dc2类型数组,并包含类似的值。

XGBoost

这是我的querybuilder查询,

a:1:{i:0;s:3:"4wd";}

但是不幸的是,该查询仅返回空输出。如果有人可以解决这个问题,那就太好了。

2 个答案:

答案 0 :(得分:1)

要清楚DC2类型,SQL中确实存在。 DC2是一个由教义添加的注释,用于指定它是包含数组的 text 值。

因此,您应该选择该列并首先获取它。教义将对其进行处理,然后再给您提供一个数组,因此您可以做任何想做的事。

可能可能使用 Like 在文本字段中进行搜索并进行过滤,但这是不正确的做法,创建一个Equipment实体并在Equipment和您的实体之间添加ManyToMany关系。具有ManyToMany关系的where子句很好地解释了here

答案 1 :(得分:0)

最后,我找到了 REGEXP 的答案,但是对于symfony 4,您需要 DoctrineExtensionsBundle

"beberlei/DoctrineExtensions": "0.3.x-dev",

在doctrine.yaml中

doctrine:
    orm:
        dql:
            string_functions:
                regexp: DoctrineExtensions\Query\Mysql\Regexp

在禁酒区

$equipment = implode("|", array('4wd', 'AbD'));
$qb->andWhere('REGEXP(c.equipment, :regexp) = true')
                    ->setParameter('regexp', $equipment);

这两个线程对答案和背景非常有帮助。 MySQL LIKE IN()?Regex with Doctrine 2 query builder?