예제 #1
0
 /**
  * Add 'sort by name' builder structures
  *
  * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare
  * @param string                     $sort         Sort field
  * @param string                     $order        Sort direction
  *
  * @return void
  */
 protected function addSortByTranslation(\Doctrine\ORM\QueryBuilder $queryBuilder, $sort, $order)
 {
     // Main alias
     $alias = $this->getMainAlias($queryBuilder);
     // The language code of current user session
     $currentCode = $this->getTranslationCode();
     // Default store language code
     $defaultCode = \XLite::getDefaultLanguage();
     // Add additional join to translations with current language code
     parent::addTranslationJoins($queryBuilder, $alias, 'st', $currentCode);
     if ($currentCode != $defaultCode) {
         // Add additional join to translations with default language code
         $this->addTranslationJoins($queryBuilder, $alias, 'st2', $defaultCode);
         // Add calculated field to the fields list to use this for sorting out
         $queryBuilder->addSelect('IFNULL(st.name,IFNULL(st2.name,translations.name)) calculatedName');
     } else {
         // Add calculated field to the fields list to use this for sorting out
         $queryBuilder->addSelect('IFNULL(st.name,translations.name) calculatedName');
     }
 }