Exemplo n.º 1
0
 public function crearTablaCatalogo(OrigenDatos $origenDato, array $datos)
 {
     //Recuperar la información para construir la tabla
     $em = $this->getEntityManager();
     $nombre_tabla = $origenDato->getNombreCatalogo();
     $campos = $origenDato->getCampos();
     //Verificar si existe la tabla
     $sql = "CREATE TABLE IF NOT EXISTS {$nombre_tabla} (";
     foreach ($campos as $campo) {
         $sql .= $campo->getNombre() . " " . $campo->getTipoCampo()->getCodigo();
         if ($campo->getSignificado()->getCodigo() == 'pk') {
             $sql .= ' PRIMARY KEY ';
             $pk = $campo->getNombre();
         }
         $sql .= ', ';
     }
     $sql = trim($sql, ', ') . '); ';
     //Crear tabla temporal para hacer un puente y validar antes de subir al catálogo
     $nombre_temp = $nombre_tabla . time();
     $sql .= ' 
             SELECT * INTO TEMP ' . $nombre_temp . ' FROM ' . $nombre_tabla . ' LIMIT 0;';
     $nombre_campos = implode(", ", array_keys($datos[0]));
     $sql .= "\n          INSERT INTO {$nombre_temp}({$nombre_campos}) VALUES ";
     foreach ($datos as $fila) {
         $sql .= "('" . implode("','", $fila) . "'), ";
     }
     $sql = trim($sql, ', ');
     // Si tiene llave primaria
     if ($pk != '') {
         //Insertar las que no están
         $sql .= "; INSERT INTO {$nombre_tabla} SELECT * FROM {$nombre_temp} WHERE {$pk} NOT IN (SELECT {$pk} FROM {$nombre_tabla})";
         //Actualizar las que estaban
         $sql .= "; UPDATE {$nombre_tabla} SET";
         foreach (array_keys($datos[0]) as $campo) {
             $sql .= " {$campo} = {$nombre_temp}.{$campo}, ";
         }
         $sql = trim($sql, ', ');
         $sql .= " FROM {$nombre_temp} WHERE {$nombre_tabla}.{$pk} IN (SELECT {$pk} FROM {$nombre_tabla}) \n                    AND {$nombre_tabla}.{$pk} = {$nombre_temp}.{$pk}";
     }
     try {
         $em->getConnection()->exec($sql);
     } catch (\PDOException $e) {
         return $e->getMessages();
     }
     return true;
 }
 /**
  * {@inheritDoc}
  */
 public function getCampos()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getCampos', array());
     return parent::getCampos();
 }
Exemplo n.º 3
0
 /**
  * @Route("/origen_dato/get_campos/{id}", name="origen_dato_get_campos", options={"expose"=true})
  */
 public function getCamposAction(OrigenDatos $origen)
 {
     $resp = '<h6>' . $this->get('translator')->trans('_campos_utilizables_en_campos_calculados_') . '</h6>
             <UL class="campos_disponibles">';
     if ($origen->getEsFusionado() or $origen->getEsPivote()) {
         $campos = explode(',', str_replace(array(' ', "'"), '', $origen->getCamposFusionados()));
         foreach ($campos as $campo) {
             $resp .= '<LI><A href="javascript:funcion()">{' . $campo . '}</A></LI>';
         }
     } else {
         $campos = $origen->getCampos();
         foreach ($campos as $campo) {
             if ($campo->getSignificado()) {
                 $resp .= '<LI><A href="javascript:funcion()">{' . $campo->getSignificado()->getCodigo() . '}</A></LI>';
             }
         }
     }
     return new Response($resp . '</UL>');
 }