使用 doctrine 查询具有 php 数组的数组类型
Query an array type with php array using doctrine
我需要使用 doctrine 查询 mysql 数组类型和 php 数组。
我的数据库列是 dc2 类型数组,包含这样的值。
a:1:{i:0;s:3:"4wd";}
这是我的 querybuilder 查询,
$qb = $this->createQueryBuilder('c');
$qb->andWhere('c.equipment IN (:equipment)')
->setParameter('equipment', array('4wd'));
$qb->getQuery()->getResult();
但不幸的是这个查询returns只有空输出。如果有人能帮助解决这个问题就太好了。
要清楚 DC2 类型,不 存在于 SQL 中。 DC2 是 doctrine 添加的注释,指定它是一个包含数组的 text 值。
因此,您应该 select 列并先获取它。 Doctrine 会处理它,然后给你一个数组,所以你可以用它做任何你想做的事。
你 可以 可能在文本字段中搜索 LIKE 并过滤,但这是不好的做法,制作一个设备实体并添加设备和您的实体之间的多对多关系。具有 ManyToMany 关系的 Where 子句很好地解释了 。
最后我用 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()? And Regex with Doctrine 2 query builder?
我需要使用 doctrine 查询 mysql 数组类型和 php 数组。
我的数据库列是 dc2 类型数组,包含这样的值。
a:1:{i:0;s:3:"4wd";}
这是我的 querybuilder 查询,
$qb = $this->createQueryBuilder('c');
$qb->andWhere('c.equipment IN (:equipment)')
->setParameter('equipment', array('4wd'));
$qb->getQuery()->getResult();
但不幸的是这个查询returns只有空输出。如果有人能帮助解决这个问题就太好了。
要清楚 DC2 类型,不 存在于 SQL 中。 DC2 是 doctrine 添加的注释,指定它是一个包含数组的 text 值。
因此,您应该 select 列并先获取它。 Doctrine 会处理它,然后给你一个数组,所以你可以用它做任何你想做的事。
你 可以 可能在文本字段中搜索 LIKE 并过滤,但这是不好的做法,制作一个设备实体并添加设备和您的实体之间的多对多关系。具有 ManyToMany 关系的 Where 子句很好地解释了
最后我用 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()? And Regex with Doctrine 2 query builder?