簡體   English   中英

SQL / Doctrine查詢以多對多關聯查找具有多個條件的數據

[英]Sql/Doctrine query to find data with multiple condition with Many to Many associations

我正在使用symfony3實現在理論上具有多對多關系的類別過濾器。 我有一個實體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或主義查詢都可以。

我真的很感謝您的幫助。

你可以試試

        $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子句的數據

為了獲得在這兩個類別中都存在的業務,您可以按如下方式編寫查詢構建器,我假設您的實體已映射成適當的多對多關系

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

供參考,請在此處查看其他答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM