在我的symfony 1.4项目中,我有两个连接到同一个表(不同的外键)的查询:
return ArticleQuery::create(null,$criteria)
->joinWithArticleCategoryRelatedByNewsCategoryId()
->joinWithArticleCategoryRelatedByHelpCategoryId();
我收到错误: SQLSTATE [42000]:语法错误或访问冲突:1066不唯一的表/别名:'article_category'
如何为此联接添加别名?
答案 0 :(得分:2)
注意:我使用的是Propel 1.6
将参数传递给join方法应该足够了。
return ArticleQuery::create(null,$criteria)
->joinWithArticleCategoryRelatedByNewsCategoryId('news')
->joinWithArticleCategoryRelatedByHelpCategoryId('help');
查看生成的BaseArticleQuery.php,了解为您生成了哪些方法。我的一个连接方法如下所示:
/**
* Adds a JOIN clause to the query using the ArticleKeyword relation
*
* @param string $relationAlias optional alias for the relation
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
*
* @return KeywordQuery The current query, for fluid interface
*/
public function joinArticleKeyword($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
Propel的优点之一是几乎所有东西都有一个具体的方法。因此,如果您的IDE支持代码完成,则可以获得方法支持的参数提示。
答案 1 :(得分:2)
这对我有用:
return ArticleQuery::create()
->joinWith('ArticleCategoryRelatedByNewsCategoryId a', Criteria::LEFT_JOIN)
->joinWith('ArticleCategoryRelatedByHelpCategoryId b', Criteria::LEFT_JOIN);
在其他情况下 - 您应该尝试升级您的Propel;)