2011-03-03 34 views
3

加入3個表有什麼辦法,使這個選擇:使用Doctrine_RawSql對象

SELECT * 
FROM `sf_guard_user` 
JOIN `friendship` 
    ON `friendship`.`user_id` = `sf_guard_user`.`id` 
JOIN `circle` 
    ON `friendship`.`circle_id` = `circle`.`id` 
WHERE `circle`.`id` = 1 
ORDER BY `circle`.`id` 

與Doctrine_RawSql對象,而無需使用外鍵?

+0

你是什麼意思時,「不使用外鍵」之稱? 順便說一句,你爲什麼要使用RawSql而不是DQL? – maectpo 2011-03-03 19:28:58

+0

我的意思是沒有關係表之間的關係。我使用MyISAM作爲我的存儲引擎,所以我不能創建外鍵,並且隱式地不能使用這些表之間的關係(在schema.yml中創建的那些表之間的關係)。無論如何,我設法創建使用Doctrine_Manager對象進行查詢:Doctrine_Manager :: getInstance() - > getCurrentConnection() - > fetchAssoc(「SELECT * FROM sf_guard_user u JOIN友情f ON u.id = f.user_id JOIN circle c ON f.circle_id = c.id WHERE c ,id = 1 ORDER BY c.id ASC「) – 2011-03-11 06:32:37

回答

1

你爲什麼決定使用Doctrine_RawSql?

在這個例子中,我使用inner join

SELECT sf.* FROM `sf_guard_user` sf 
INNER JOIN `friendship` f on f.`user_id` = sf.`id` 
INNER JOIN `circle` c on f.`circle_id` = c.`id` 
WHERE c.`id` = 1 
ORDER BY c.`id`