Как добавить псевдоним в запросе propel - PullRequest
2 голосов
/ 11 октября 2011

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

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

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

Как добавить псевдоним в это объединение?

Ответы [ 2 ]

2 голосов
/ 24 июля 2012

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

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

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

2 голосов
/ 11 октября 2011

Примечание: я использую Propel 1.6

. Этого должно быть достаточно, чтобы передать аргумент методу соединения.

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

...