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都只是名義上不同,但爲什麼執行更具體的一個,而不是規範,自然一個?