Sql/Doctrine查询找到具有多对多关联的多个条件的数据

问题描述:

我在使用symfony3的学说中实现了具有多对多关系的类别过滤器。我有一个实体BusinessCategory与多对多关联。新表多对多的关系看起来像下面Sql/Doctrine查询找到具有多对多关联的多个条件的数据

business_id category_id 
1    1 
1    2 
2    1 
2    2 
3    1 

现在我想所有这些都为category_id=1 and category_id=2业务。

它应该选择商家ID 1,2

我的SQL查询: -

SELECT * FROM business 
LEFT JOIN business_category ON business_category.business_id=business.id 
WHERE business_category.category_id = 1 AND business_category.category_id = 2 

任何SQL或学说查询会工作。

我真的很感激任何帮助。

+0

你的意思是每个企业应该存在于1类和2类两个类别甚至没有单一类别? –

+0

是的,@MKhalidJunaid和我需要用AND操作来获取这些业务。 –

要获得这两个类别你写存在于您的查询生成器如下的企业,我想你的实体映射与适当的多对多的关系

$repo = $this->getDoctrine()->getRepository('YourBundle:Business'); 

$repo = $this->createQueryBuilder('b') 
    ->addSelect('COUNT(DISTINCT c.id) AS total_categories') 
    ->innerJoin('b.categories', 'c'); 

$categoryIds = array(1,2); 

$repo->add('where', $qb->expr()->in('c', $categoryIds)) 
    ->groupBy('b.id') 
    ->having('total_categories = '.count($categoryIds)) 
    ->getQuery() 
    ->getResult(); 

作为参考请参阅另一个答案here

你可以尝试

 $qb->select('p') 
     ->from('AppBundle:Project', 'p') 
     ->innerJoin('p.users', 'u') 
     ->where('u.id=:userIdDaily') 
     ->andWhere('u.id=:UserID') 
     ->setParameter('userIdDaily', $UserObj) 
     ->setParameter('UserID', $UserObj->getId()) 
    ; 
    $query = $qb->getQuery(); 
    $results = $query->getResult(); 

我有项目和用户多对多的关系。我用这个多来获取数据的where子句

+0

我已经尝试过但没有为我工作。 –

+0

它显示的结果是什么? –