2013-05-22 30 views
1

我有以下SQL语句:复杂子句中行走JOIN 1.6

SELECT * FROM image 
LEFT JOIN history 
ON (image.id = history.image_id 
    AND history.user_id = 1 
WHERE active = 1 

查询的目的是要找到从图像表中的所有记录(含旗“活动”),只有那些记录来自历史记录表,指向当前用户。在这些表之间存在n-m关系,并且可能会有相同image_id的记录,但是对于其他user_id。我不希望这些记录被包括在内。

我想它使用的Propel 1.6来实现,所以我想代码应该是这样的:

ImageQuery::create() 
->filterByActive(1) 
->leftJoinHistory('History.Image') 
->addJoinCondition('History.Image', 'History.user_id = ?', 1) 
->find(); 

,但它无法

无法确定绑定到子句中的参数列'History.user_id =?'

问题在哪里?

回答

0

尝试:

ImageQuery::create() 
->filterByActive(1) 
->leftJoinHistory() 
->addJoinCondition('History', 'History.user_id = ?', 1) 
->find(); 

我不知道为什么你尝试加入类似History.Image,因为关系似乎是Image.History代替。

+0

它有帮助。谢谢,j0k! – Pepe