Доктрина DQL IN клауза с simple_array

Трябва да проверя cpv.text (simple_array тип Doctrine2 (1,2,5,6)) за pr.id, съдържащ се в него. Има ли друг начин да направите това? Заявката ми не работи, защото използвам клаузата IN погрешно. Съжалявам за моя английски.

return  $this->getEntityManager()
->createQuery(("SELECT c, cpv, pr, p "
. "FROM AmoMainBundle:Company c "
. "JOIN c.status s "
. "JOIN cpv.param p "
. "JOIN c.country co "
. "JOIN p.props pr "
. "WHERE  EXISTS (SELECT p2 FROM AmoMainBundle:Param p2 "
. "LEFT JOIN p2.props pr2 "
. "LEFT JOIN p2.companyParameterValues cpv2 "
. "WHERE (p2.type >=2 AND pr2.text LIKE ?1 "
. "AND pr2.id IN (cpv2.text) AND p2.name LIKE ?2) "
. "OR (p2.type < 2 AND p2.name LIKE ?2)) "
. "AND (s IS NULL OR s.dateto < CURRENT_TIMESTAMP()) "
. "ORDER BY c.lastupd DESC, "
. "c.name ASC, p.mainPriority DESC" )
                    ->setParameter(1,$text)->setParameter(2, $name);

person maches    schedule 10.04.2015    source източник


Отговори (1)


Невъзможно е, защото доктрината съхранява данни от масив и simple_array като текст. Той се преобразува в PHP масив след хидратиране. Всички възможни типове и документи. Така че трябва да използвам търсене в пълен текст, но машината ми за таблици е InnoDB.

person maches    schedule 11.04.2015