Propel 1.6中SQL JOIN中的复杂子句

时间:2013-05-22 09:35:37

标签: sql orm propel

我有以下SQL语句:

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

查询的目的是查找Image表中的所有记录(标记为“active”),并且只查找History表中引用当前用户的那些记录。表之间存在n-to-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 =?'

中的参数的列

问题出在哪里?

1 个答案:

答案 0 :(得分:0)

尝试:

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

我不知道您为什么尝试加入类似History.Image的内容,因为这种关系似乎是Image.History