在两个表之间加入DQL(symfony2)多个连接

时间:2012-07-14 15:24:32

标签: join symfony doctrine-orm dql

我的DQL查询存在问题。我有一个表有3个外键userId,userRId和userAId。其中两个外键可能为NULL。

我想加入查询中的所有外键,但我不知道如何在同一个表之间连接两个或三个外键。 (见查询)有人可以给我一些想法吗?

   **TABLE A**
   id    userId   userRId   userAId
   1     2        NULL      NULL
   1     2         1        NULL
   1     2        NULL         1

**TABLE USER**
userId  name
  2     xxxx
  1     xxxx

The DQL query:

"SELECT FROM nasyBundle:A a JOIN a.userId u , a JOIN userRId , a JOIN userAid
         WHERE ...

1 个答案:

答案 0 :(得分:3)

在DQL中,您对对象(实体)而不是表(基于映射)进行操作。所以当你有这样的实体时:

class User
{
    private $id;
    private $name;
}

class TableA
{
    private $id;
    private $user;
    private $userR;
    private $userA;
}

你可以像这样创建查询(当你有有效的映射时)

SELECT a
FROM nastyBundle:TableA a
INNER JOIN a.user u
LEFT JOIN a.userR ur
LEFT JOIN a.userA ua

但是,是的,你需要映射信息。如果您没有映射,可以使用doctrine生成它:mapping:import只需键入symfony项目以阅读更多php app/console help doctrine:mapping:import