Как добавить псевдоним в запрос propel
В моем проекте symfony 1.4 у меня есть запрос с двумя соединениями к одной и той же таблице (разные внешние ключи):
return ArticleQuery::create(null,$criteria)
->joinWithArticleCategoryRelatedByNewsCategoryId()
->joinWithArticleCategoryRelatedByHelpCategoryId();
Я получаю сообщение об ошибке: SQLSTATE[42000]: Синтаксическая ошибка или нарушение доступа: 1066 Не уникальная таблица/псевдоним: 'article_category'
Как я могу добавить псевдоним к этому соединению?
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 с поддержкой завершения кода, вы можете получать подсказки о том, какие аргументы поддерживают методы.
Это сработало для меня:
return ArticleQuery::create()
->joinWith('ArticleCategoryRelatedByNewsCategoryId a', Criteria::LEFT_JOIN)
->joinWith('ArticleCategoryRelatedByHelpCategoryId b', Criteria::LEFT_JOIN);
В другом случае - вам следует попробовать обновить свой двигатель;)