コード例 #1
0
 public function executeDuplicate()
 {
     $tabla = $this->getTablaOrCreate();
     //DUPLICAR LA TABLA
     $mitabla = new Tabla();
     $tabla->copyInto($mitabla);
     $mitabla->setNombre("Copia de " . $tabla->getNombre());
     $mitabla->save();
     //DUPLICAMOS CAMPOS
     $campos = $tabla->getRelCampoTablasJoinCampo();
     foreach ($campos as $camp) {
         $campo = $camp->getCampo();
         $items = $campo->getItemBases();
         $micampo = new Campo();
         $campo->copyInto($micampo);
         $micampo->save();
         //DUPLICAMOS ITEMS
         foreach ($items as $item) {
             $miitem = new ItemBase();
             $item->copyInto($miitem);
             $miitem->setIdCampo($micampo->getIdCampo());
             $miitem->save();
         }
         $micamp = new RelCampoTabla();
         $micamp->setIdCampo($micampo->getIdCampo());
         $micamp->setIdTabla($mitabla->getIdTabla());
         $micamp->save();
     }
     return $this->redirect('tablas/list');
 }
コード例 #2
0
 public function executeDuplicate()
 {
     $empresa = $this->getEmpresaOrCreate();
     //DUPLICAR LA EMPRESA
     $miempresa = new Empresa();
     $empresa->copyInto($miempresa);
     $miempresa->setNombre("Copia de " . $empresa->getNombre());
     $miempresa->save();
     $tablas_equiv = array();
     $campos_cambiar = array();
     //DUPLICAMOS TABLAS
     $tablas = $empresa->getTablas();
     foreach ($tablas as $tabla) {
         $mitabla = new Tabla();
         $tabla->copyInto($mitabla);
         $mitabla->setIdEmpresa($miempresa->getIdEmpresa());
         $mitabla->save();
         //GUARDAMOS LAS EQUIVALENCIAS DE LAS TABLAS PARA LUEGO CAMBIAR LAS RELACIONES
         $tablas_equiv[$tabla->getIdtabla()] = $mitabla->getIdTabla();
         $campos = $tabla->getRelCampoTablasJoinCampo();
         foreach ($campos as $camp) {
             $campo = $camp->getCampo();
             $items = $campo->getItemBases();
             $micampo = new Campo();
             $campo->copyInto($micampo);
             $micampo->setIdEmpresa($miempresa->getIdEmpresa());
             $micampo->save();
             if ($micampo->getTipo() == CampoPeer::ID_TABLA) {
                 $campos_cambiar[] = $micampo->getIdCampo();
             }
             //DUPLICAMOS ITEMS
             foreach ($items as $item) {
                 $miitem = new ItemBase();
                 $item->copyInto($miitem);
                 $miitem->setIdCampo($micampo->getIdCampo());
                 $miitem->save();
             }
             $micamp = new RelCampoTabla();
             $micamp->setIdCampo($micampo->getIdCampo());
             $micamp->setIdTabla($mitabla->getIdTabla());
             $micamp->save();
         }
     }
     //AHORA CAMBIAMOS LOS ENLACES A LAS TABLAS
     foreach ($campos_cambiar as $camp) {
         $campo = CampoPeer::retrieveByPk($camp);
         $campo->setValorTabla($tablas_equiv[$campo->getValorTabla()]);
         $campo->save();
     }
     return $this->redirect('tablas/list');
 }