我需要通过使用学说来用php数组查询mysql数组类型。
我的数据库列是 dc2类型数组,并包含类似的值。
XGBoost
这是我的querybuilder查询,
a:1:{i:0;s:3:"4wd";}
但是不幸的是,该查询仅返回空输出。如果有人可以解决这个问题,那就太好了。
答案 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?