我有类任务与categories
数组的整数属性
class Task{
/**
* @var array
*
* @ORM'Column(name="categories", type="array", nullable=true)
*/
private $categories;
}
现在在控制器中,我试图构建查询,检查category id
变量是否在任务
categories
数组中 $qb = $this->getDoctrine()->getRepository('CoreBundle:Task')->createQueryBuilder('t');
$qb->where(':category IN (t.categories)')
->setParameter('category', $category);
显示错误:
[Syntax Error] line 0, col 140: Error: Expected Literal, got "t";
据我所知,这在Doctrine中是不可能直接实现的,因为在从数据库中反序列化之前,数组在技术上不是数组。
我知道获得您正在寻找的结果的唯一方法是将您的数据库值视为字符串,并使用带有通配符的like
在该值中搜索所需的字符串。
$qb = $this->getDoctrine()->getRepository('CoreBundle:Task')->createQueryBuilder('t');
$qb->where('t.categories LIKE :category')
->setParameter('category', '%'.$category.'%');