Doctrine查询构建器IN无法正常工作

时间:2016-06-24 16:50:50

标签: php mysql symfony doctrine-orm

我有一个名为Continent的实体。一个大陆有国家:

/**
 * @ManyToMany(targetEntity="Country")
 * @JoinTable(name="cont_countries",
 *      joinColumns={@JoinColumn(name="cont_id", referencedColumnName="id")},
 *      inverseJoinColumns={@JoinColumn(name="country_id", referencedColumnName="id", unique=true)}
 *      )
 * @var Country[]
 **/
private $countries;

我想找到哪个大陆属于一个国家。 (例如,俄罗斯属于欧洲,也属于亚洲)

我试过这个:

$qb->andWhere(':country IN (t.countries)')
->setParameter('country', $country)
// possibly more conditions after that

但出于某种原因,由于Uncaught exception声明

,我得到IN

1 个答案:

答案 0 :(得分:2)

您需要将国家/地区ID数组传递给函数。

试试这个:

$qb->andWhere('t.countries IN (:country)')
->setParameter('country', $country)

而不是:

$qb->andWhere(':country IN (t.countries)')
   ->setParameter('country', 
                          // Extract id from a collections
                          array_map('current', $country) 
                         ); 

希望这个帮助