試してみましたが、うまくいきません。テスト用のアクションを作成しました:
public function testAction() {
$em = $this->getDoctrine()->getEntityManager();
$qb = $em->getRepository('myBundle:Equipement')->createQueryBuilder('e');
$qb->where($qb->expr()->in('e.domaines', array('?1')));
$q = $qb->getQuery();
$q->setParameter(1, 1);
var_dump($q->getArrayResult());
}
しかし、意味論的なエラーがあります
[Semantical Error] line 0, col 61 near 'domaines IN(': Error: Invalid PathExpression.
StateFieldPathExpression or SingleValuedAssociationField expected.
私のクラスの機器にはフィールドドメインがあります。
class Equipement
{
[...]
/**
* @ORM\ManyToMany(targetEntity="Domaine", inversedBy="equipements")
*/
private $domaines;
このような配列を構築することで問題を回避しました:
$domaines = array();
$em = $this->getDoctrine()->getEntityManager();
$equipement = $em->getRepository('iMDEODISAASBundle:Equipement')->find($equipementId);
$repoDomaine = $em->getRepository('iMDEODISAASBundle:Domaine');
$idx = 0;
foreach ($equipement->getDomaines() as $domaine) {
$d= $repoDomaine->get($domaine->getId());
$domaines[$idx]=$d[0];
$idx++;
}
return $domaines;
しかし、これはこれを行うための最良の方法ではないと思います。