如何使用内部加入与学说1.2?

时间:2010-12-24 15:03:33

标签: php doctrine-1.2

我有一些代码(作品):

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

两个问题:

  1. sombody能给我一个例子,如何加入下一张桌子(多一张)? Doctrine的文档仅包含基本示例......: - (

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

1 个答案:

答案 0 :(得分:4)

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

$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

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