我有一些代码(作品):
$q = Doctrine_Query::create()
->from('UsersProjects up')
->innerJoin('up.Users u');
两个问题:
sombody能给我一个例子,如何加入下一张桌子(多一张)? Doctrine的文档仅包含基本示例......: - (
我可以将innerJoin()
与我的数据库中的任何表(例如,与用户相关的用户类型)一起使用,还是仅使用与UsersProjects相关的表(在这种情况下为:项目和用户)?当我尝试这样做时,我得到错误“未知关系”。
答案 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相关。电话号码和地址与用户和城市与地址相关。