2014-04-17 39 views
0

我有这样的实体按实体集合过滤。 Symfony2的

class Business 
{ 
    ... 
    /** 
    * 
    * @ORM\ManyToMany(targetEntity="Category", inversedBy="businesses") 
    * 
    */ 
    private $categories; 
    ... 
} 
class Category 
{ 
    ... 
    /** 
    * 
    * @ORM\ManyToMany(targetEntity="Business", mappedBy="categories") 
    * 
    */ 
    private $businesses; 
    ... 
} 

我尝试在BusinessRepository此查询,但不工作

$em = $this->getEntityManager(); 

$dql = " 
     SELECT a 
     FROM BusinessMainBundle:Business a 
     WHERE a.title LIKE :title AND :category IN (a.categories)"; 

$query = $em->createQuery($dql) 
      ->setParameter("title", "%".$title."%") 
      ->setParameter("category", $category); 

如果你能解决这个问题,我将感谢

回答

0

你需要加入类别。您的DQL应该是这样的:

$dql = " 
      SELECT a 
      FROM BusinessMainBundle:Business:Business a 
      LEFT JOIN a.categories c 
      WHERE a.title = :title AND c.id IN (:category) 
    "; 

->setParameter("category", $category); 

$类应该是值的数组(按类别的这个例子ID)。

+0

非常感谢。有效。你是最棒的! – user3546128