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'); }
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'); }