簡體   English   中英

如何使用Doctrine創建內部聯接?

[英]How to create an inner join with Doctrine?

我的數據庫中有3個表:

  1. 協會
    • ID
    • 標題
  2. 用戶
    • ID
    • 名稱
  3. association_users
    • ID
    • id_users
    • id_associations

我想在SQL上執行以下查詢:

SELECT a.id, a.title, u.id, u.name
      FROM association AS a
      INNER JOIN association_user AS au
      ON au.association_id = a.id
      INNER JOIN user AS u
      ON u.id = au.user_id
      WHERE au.user_id = ID

目前,我有這個:

        return $this->createQueryBuilder('a')
                    ->join('association.users', 'u')
                    ->addSelect('a')
                    ->join('user.id', 'u.id')
                    ->addSelect('u')
                    ->where("au.user_id = :id")
                    ->setParameter('id', $userid)
                    ->getQuery()
                    ->getResult()
    ;

但這不起作用:

[Semantical Error] line 0, col 73 near '.users u INNER': Error: Identification Variable association used in join path expression but was not defined before.

我的querybuilder有什么問題?

工作代碼

我已將查詢更改為:

'query_builder' => function(EntityRepository $er) {
                    return $er->createQueryBuilder('a')                              
                            ->innerJoin('a.users','u')
                            ->where('u.id = :id')->setParameter('id', $this->getUser()->getId());             
                },

如果您的實體映射正確,則querybuilder將自動加入映射中指定的列,您無需在此處再次指定它們:

$qb->select("a,u")
        ->from('MyBundle\Association','a')
        ->innerJoin('a.users','u')
        ->where('u.id = :id')
        ->setParameter('id',$userid);

暫無
暫無

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

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