0

我有一些代码(作品):

$q = Doctrine_Query::create()
     ->from('UsersProjects up')
     ->innerJoin('up.Users u');

两个问题:

  1. 有人可以给我举个例子,如何加入下一张桌子(不止一张)?Doctrine 的文档仅包含基本示例... :-(

  2. 我可以innerJoin()与我的数据库中的任何表一起使用(例如,与用户相关的用户类型)还是只与与用户项目相关的表(在这种情况下:项目和用户)一起使用?当我尝试这样做时,我收到错误“未知关系”。

4

1 回答 1

4

Doctrine 查询使用“流利”接口,这意味着每个方法都返回对查询的引用,以便您可以继续链接新方法(select()、innerJoin()、from()、where() 等)。您可以根据需要添加任意数量的内部连接,但连接的对象/表需要与您已经连接的对象/表之一相关(或表中的基础)。例如:

$q = Doctrine_Query::create() 
  ->from('UsersProjects up') 
  ->innerJoin('up.Users u')
  ->innerJoin('u.PhoneNumbers p') // users may have multiple phone numbers
  ->innerJoin('u.Addresses a') // users may have multiple addresses
  ->innerJoin('a.City c'); // each address has a city

如果不进入教义提供的 RawSql 接口,就无法连接不相关的表。您可以看到只有 Users 与基表 UsersProjects 相关。电话号码和地址与用户相关,城市与地址相关。

于 2011-06-03T18:58:40.087 回答