【问题标题】:How to add alias in propel query如何在推进查询中添加别名
【发布时间】:2011-10-11 12:23:28
【问题描述】:

在我的 symfony 1.4 项目中,我有两个连接到同一个表的查询(不同的外键):

return ArticleQuery::create(null,$criteria)
        ->joinWithArticleCategoryRelatedByNewsCategoryId()
        ->joinWithArticleCategoryRelatedByHelpCategoryId();

我收到错误: SQLSTATE[42000]:语法错误或访问冲突:1066 Not unique table/alias: 'article_category'

如何为这个加入添加别名?

【问题讨论】:

    标签: php join symfony1 alias propel


    【解决方案1】:

    这对我有用:

    return ArticleQuery::create()
        ->joinWith('ArticleCategoryRelatedByNewsCategoryId a', Criteria::LEFT_JOIN)
        ->joinWith('ArticleCategoryRelatedByHelpCategoryId b', Criteria::LEFT_JOIN);
    

    在其他情况下 - 你应该尝试升级你的 Propel ;)

    【讨论】:

    【解决方案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,您可以收到有关方法支持哪些参数的提示。

    【讨论】:

      猜你喜欢
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      相关资源
      最近更新 更多