2
我有以下SQL查询:我的DQL查询有什么“错误”?
select bank.*
from bank
join branch on branch.bank_id = bank.id
join account a on a.branch_id = branch.id
join import i on a.import_id = i.id
它返回正是我所期望的。
现在考虑以下两个DQL查询:
$q = Doctrine_Query::create()
->select('Bank.*')
->from('Bank')
->leftJoin('Branch')
->leftJoin('Account')
->leftJoin('Import');
-
$q = Doctrine_Query::create()
->select('Bank.*')
->from('Bank')
->innerJoin('Branch')
->innerJoin('Account')
->innerJoin('Import');
这本来是很高兴已经能够使用“连接()”方法,但是,从官方它说,Doctrine在这里加入文档,“DQL支持两种连接INNER JOIN和LEFT JOIN”。由于某种原因彻底逃脱了我,他们选择不支持自然连接。无论如何,这意味着上述两个查询是我唯一的选择。那么,这是不幸的,因为他们都没有工作。
第一个查询 - 带有左连接的查询 - 不起作用,因为当然,左连接和自然连接是两个不同的事情。
第二个查询也不起作用。令人费解的是,我收到一个错误:“未知的关系别名。”
为什么Doctrine能够找出LEFT JOIN的别名而不是INNER JOIN?
顺便说一句,我意识到INNER JOIN和JOIN都只是名义上不同,但为什么执行更具体的一个,而不是规范,自然一个?