Как добавить псевдоним в запрос propel


В моем проекте symfony 1.4 у меня есть запрос с двумя соединениями к одной и той же таблице (разные внешние ключи):

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

Я получаю сообщение об ошибке: SQLSTATE[42000]: Синтаксическая ошибка или нарушение доступа: 1066 Не уникальная таблица/псевдоним: 'article_category'

Как я могу добавить псевдоним к этому соединению?

Author: winnfield, 2011-10-11

2 answers

Примечание: Я использую 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 с поддержкой завершения кода, вы можете получать подсказки о том, какие аргументы поддерживают методы.

 2
Author: CheeseSucker, 2011-10-11 13:11:11

Это сработало для меня:

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

В другом случае - вам следует попробовать обновить свой двигатель;)

 2
Author: Vitalii Zurian, 2012-07-24 14:48:39