public function hubocambiodetalle($id) { $difiere = false; ///Asumismos que no ha variado $nombreclasepadre = $this->modelopadre; //Obtiene la matriz de relaciones del modelo padre //recorriendo los modelos o clase hijas , puede haber mas de una OJO foreach ($this->modeloshijos as $nombreclasehija => $nombreclasetemporal) { //Obteniendo dinamicamente el campo enlace para cada modelo hijo $campoenlace = $this->getFieldLink($nombreclasetemporal); $registrosoriginales = MiFactoria::getRegistrosHijos($nombreclasehija, $campoenlace, $id); $registrostemporales = MiFactoria::getRegistrosHijos($nombreclasetemporal, $campoenlace, $id); //if (count($registrostemporales)==0) //throw new CHttpException(500,'nos e hallaron resgistros tremporal.'); ///Recorriendo los registro originales if (count($registrostemporales) == count($registrosoriginales)) { foreach ($registrosoriginales as $roworiginal) { $roworiginal->setScenario("buffer"); //echo " Recorriendo el grupo de regsitros originales(".count($registrosoriginales).") registros temporales (".count($registrostemporales).") : <br> "; foreach ($registrostemporales as $rowtemporal) { // ECHO " VERIFICAND CULA CORREPSODNE A CUAL ...<BR>"; //echo "id original ".$roworiginal->attributes['id']." - id temporal ".$rowtemporal->attributes['id']."<br>"; if ($roworiginal->attributes['id'] == $rowtemporal->attributes['id']) { //Si son correspondientes foreach ($roworiginal->getSafeAttributeNames() as $clave => $nombrecampo) { //echo "( ".$roworiginal->getScenario()." ".$roworiginal->id.") El registro original : ".$nombrecampo." ".$roworiginal->{$nombrecampo}." es igual a temporal? :".$nombrecampo." : ".$rowtemporal->{$nombrecampo}."<br>"; // throw new CHttpException(500," Se hallo diferencia El registro original : ".$nombrecampo." ".$valorcampo." es igual a? temporal :".$rowtemporal->attributes[$nombrecampo]."<br>"); if ($rowtemporal->{$nombrecampo} != $roworiginal->{$nombrecampo} and $nombrecampo != 'id' and $nombrecampo != 'idtemp' and $nombrecampo != 'idstatus' and $nombrecampo != 'idusertemp') { //echo "El registro original : ".$nombrecampo." ".$roworiginal->{$nombrecampo}." es igual a temporal? :".$nombrecampo." : ".$rowtemporal->{$nombrecampo}."<br>"; // throw new CHttpException(500," Se hallo diferencia El registro original : ".$nombrecampo." ".$valorcampo." es igual a? temporal :".$rowtemporal->attributes[$nombrecampo]."<br>"); $difiere = true; break; } } //find de bucle de campos en cada fila } unset($rowtemporal); if ($difiere) { break; } } unset($roworiginal); if ($difiere) { break; } } ///fin del bucle del modelo } else { $difiere = true; } unset($registrostemporales); unset($registrosoriginales); if ($difiere) { break; } } //Fin del bucle de los modelos hijos //yii::app()->end(); return $difiere; }