SQL/Doctrine查询以查找具有许多与许多关联的多种条件的数据



我正在实现使用Symfony3中许多关系的类别过滤器3。我有一个实体BusinessCategory,其中许多关联。许多与许多关系的新表看起来如下

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或学说查询都可以使用。

我真的很感谢任何帮助。

要获得两类中存在的业务,您的查询构建器如下所示,我认为您的实体被映射到许多关系到许多关系

$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();

有关参考

您可以尝试

        $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();

我有项目和用户很多关系。我用它来获取多个条款

的数据

相关内容

  • 没有找到相关文章

最新更新