MySql Doctrine: найти, если заданная переменная имеет свойство IN array

У меня есть класс Task с categories array of integers property

 class Task{ /** * @var array * * @ORM\Column(name="categories", type="array", nullable=true) */ private $categories; } 

теперь в контроллере я пытаюсь создать запрос, который будет проверять, является ли переменная category id categories массиве 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 напрямую, поскольку массив не является технически массивом до тех пор, пока он не будет удален из базы данных.

Единственный способ, которым я знаю, чтобы получить результат, который вы ищете, – это обработать значение своей базы данных в виде строки и найти нужную строку в этом значении, используя символы с подстановочными знаками.

 $qb = $this->getDoctrine()->getRepository('CoreBundle:Task')->createQueryBuilder('t'); $qb->where('t.categories LIKE :category') ->setParameter('category', '%'.$category.'%');