我有一个带有categories
整数属性数组的类Task
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";
答案 0 :(得分:3)
据我所知,直接在Doctrine中这是不可能的,因为在数组从数据库中反序列化之前,数组在技术上并不是一个数组。
我知道获得您正在寻找的结果的唯一方法是将数据库值视为字符串,并使用带有通配符的like
在该值中搜索所需的字符串。
$qb = $this->getDoctrine()->getRepository('CoreBundle:Task')->createQueryBuilder('t');
$qb->where('t.categories LIKE :category')
->setParameter('category', '%'.$category.'%');