示例#1
0
 /**
  * @param       $table
  * @param array $data
  *
  * @return bool|null
  * @throws Exception
  */
 public function updateOrInsert($table, array $data = [])
 {
     $primaryKeys = $this->repository->getCache()->getTablePrimaryKeys($table);
     /**
      * @T00D00 - bug for translations, permissions ...!
      */
     if (!$primaryKeys) {
         return;
     }
     foreach ($primaryKeys as $primaryKey) {
         if (!isset($data[$primaryKey])) {
             return;
         }
     }
     $this->entity->setTable($table);
     foreach ($primaryKeys as $primaryKey) {
         $this->entity->where($primaryKey, $data[$primaryKey]);
     }
     $this->entity->getQuery()->select(['`' . $table . '`.*']);
     $record = $this->entity->one();
     if ($record) {
         return $this->update($table, $data);
     }
     return (new InsertRecord($this->record, $this->entity, $this->repository))->setTables($table)->execute();
 }
示例#2
0
文件: Sort.php 项目: pckg/generic
 protected function applyGuessedSorts(Entity $entity)
 {
     if (!$entity->getQuery()->getOrderBy()) {
         $cache = $entity->getRepository()->getCache();
         if ($cache->tableHasField($entity->getTable(), 'order')) {
             $entity->orderBy('`' . $entity->getTable() . '`.`order` ASC');
         } else {
             if ($cache->tableHasField($entity->getTable(), 'ord')) {
                 $entity->orderBy('`' . $entity->getTable() . '`.`ord` ASC');
             } else {
                 if ($cache->tableHasField($entity->getTable(), 'position')) {
                     $entity->orderBy('`' . $entity->getTable() . '`.`position` ASC');
                 } else {
                     if ($cache->tableHasField($entity->getTable(), 'dt_published')) {
                         $entity->orderBy('IF(`' . $entity->getTable() . '`.`dt_published` BETWEEN \'0000-00-00 00:00:01\' AND NOW() , 1, 0) DESC, id ASC');
                     } else {
                         $entity->orderBy('`' . $entity->getTable() . '`.`id` DESC');
                     }
                 }
             }
         }
     }
 }