1

我有以下 SQL 语句:

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

查询的目的是查找 Image 表中的所有记录(带有标志“活动”),并且仅查找 History 表中引用当前用户的那些记录。表之间存在 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 = ?”中的参数的列

问题出在哪里?

4

1 回答 1

0

尝试:

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

我不知道你为什么要尝试加入类似的东西,History.Image因为这种关系似乎是Image.History相反的。

于 2013-05-22T10:20:03.167 回答