Пример #1
0
 /**
  * @return dmDoctrineQuery the default admin list query
  */
 public function getAdminListQuery(dmDoctrineQuery $query)
 {
     return $this->joinLocals($query->withI18n(null, $this->getComponentName()), true);
 }
 protected function processSearchQuery(dmDoctrineQuery $query, $search)
 {
     $searchParts = explode(' ', $search);
     $rootAlias = $query->getRootAlias();
     $translationAlias = $rootAlias . 'Translation';
     $table = $this->getDmModule()->getTable();
     $query->withI18n($this->getUser()->getCulture(), $this->getDmModule()->getModel());
     foreach ($searchParts as $searchPart) {
         $ors = array();
         $params = array();
         foreach ($table->getAllColumns() as $columnName => $column) {
             $alias = $table->isI18nColumn($columnName) ? $translationAlias : $rootAlias;
             switch ($column['type']) {
                 case 'blob':
                 case 'clob':
                 case 'string':
                 case 'enum':
                 case 'date':
                     $ors[] = $alias . '.' . $columnName . ' LIKE ?';
                     $params[] = '%' . $searchPart . '%';
                     break;
                 case 'integer':
                 case 'float':
                 case 'decimal':
                     if (is_numeric($searchPart)) {
                         $ors[] = $alias . '.' . $columnName . ' = ?';
                         $params[] = $searchPart;
                     }
                     break;
                 case 'boolean':
                 case 'time':
                 case 'timestamp':
                 case 'date':
                 default:
             }
         }
         if (count($ors)) {
             $query->addWhere(implode(' OR ', $ors), $params);
         }
     }
 }
 public function getAdminListQuery(dmDoctrineQuery $query)
 {
     return $query->withI18n();
 }
Пример #4
0
 /**
  * Will join named relations
  * @param dmDoctrineQuery $query
  * @param array $aliases
  * @param boolean $with18n
  */
 public function joinRelations($query, array $aliases, $withI18n = false)
 {
     $rootAlias = $query->getRootAlias();
     foreach ($aliases as $alias) {
         if (!($relation = $this->getRelationHolder()->get($alias))) {
             throw new dmException(sprintf('%s is not a valid alias for the table %s', $alias, $this->getComponentName()));
         }
         if ($relation->getAlias() === 'Translation') {
             $query->withI18n();
         } elseif ($relation->getClass() === 'DmMedia') {
             $mediaJoinAlias = dmString::lcfirst($relation->getAlias());
             $query->leftJoin(sprintf('%s.%s %s', $rootAlias, $relation->getAlias(), $mediaJoinAlias))->leftJoin(sprintf('%s.%s %s', $mediaJoinAlias, 'Folder', $mediaJoinAlias . 'Folder'));
         } else {
             $joinAlias = dmString::lcfirst($relation->getAlias());
             $query->leftJoin(sprintf('%s.%s %s', $rootAlias, $relation->getAlias(), $joinAlias));
             if ($withI18n && $relation->getTable()->hasI18n()) {
                 $joinTranslationAlias = $joinAlias . 'Translation';
                 $query->leftJoin($joinAlias . '.Translation ' . $joinTranslationAlias . ' ON ' . $joinAlias . '.id = ' . $joinTranslationAlias . '.id AND ' . $joinTranslationAlias . '.lang = ?', myDoctrineRecord::getDefaultCulture());
             }
         }
     }
     return $this;
 }