我想知道是否有一种方法可以搜索如下所示的文档字段:
/**
* @var array
*
* @ORM\Column(name="tags", type="array", nullable=true)
*/
private $tags;
在数据库中看起来像 php 数组解释:
a:3:{i:0;s:6:"tagOne";i:1;s:6:"tagTwo";i:2;s:8:"tagThree";}
现在我尝试通过尝试的标签搜索实体
public function findByTag($tag) {
$qb = $this->em->createQueryBuilder();
$qb->select('u')
->from("myBundle:Entity", 'u')
->where('u.tags LIKE :tag')
->setParameter('tag', $tag );
$result=$qb->getQuery()->getResult();
return $result;
}
总是返回 array[0]
就是不明白
我可以改变它们的保存方式 对于任何帮助,提前致谢
最佳答案
您需要在要搜索的值之前和/或之后为%
定义一个literal
标记;在这种情况下,您甚至不需要在短语前后使用单引号:
$qb = $this->em->createQueryBuilder();
$qb->select('u')
->from("myBundle:Entity", 'u')
->where($qb->expr()->like('u.tags', $qb->expr()->literal("%$tag%")))
$result=$qb->getQuery()->getResult();
return $result;
您可以关注所有 Doctrine expr class 的列表
关于php - Doctrine2 在字段数组中按值查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23875574/