Problema con insert

Hola,

No se que ocurre pero yii me esta haciendo algo muy raro al intentar hacer un insert




            $cambiosInsert = Yii::app()->db->createCommand()

            ->insert('cambios',

            array(

                'IdTurno'=>(int)Yii::app()->user->getState('IdTurno'),

                'FechaCambio'=>(int)$turnoDiaActual['Fecha'],

                'IdUsuarioAplicacionAntes'=>(int)$turnoDiaActual['IdUsuarioAplicacion'],

                'IdUsuarioAplicacionDespues'=>(int)$_POST['IdUsuarioAplicacion'],

                'IdTipoTurnoAntes'=>(int)$turnoDiaActual['IdTipoTurno'],

                'IdTipoTurnoDespues'=>(int)$_POST['IdTipoTurno'],

                'ComentarioCambios'=>$_POST['ComentarioCambios'],

                'IdUsuarioAplicacionCambio'=>(int)Yii::app()->user->id  ) );



He trazado el programa paso a paso y me devuelve el siguiente sql

<<

CDbCommand falló al ejecutar la sentencia SQL: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (turnoscod.cambios, CONSTRAINT cambios_ibfk_1 FOREIGN KEY (IdUsuarioAplicacionAntes) REFERENCES usuariosaplicacion (Id)). The SQL statement executed was: INSERT INTO cambios (IdTurno, FechaCambio, IdUsuarioAplicacionAntes, IdUsuarioAplicacionDespues, IdTipoTurnoAntes, IdTipoTurnoDespues, ComentarioCambios, IdUsuarioAplicacionCambio) VALUES (:IdTurno, :FechaCambio, :IdUsuarioAplicacionAntes, :IdUsuarioAplicacionDespues, :IdTipoTurnoAntes, :IdTipoTurnoDespues, :ComentarioCambios, :IdUsuarioAplicacionCambio) (I:\xampp\htdocs\yii\framework\db\CDbCommand.php:358)

>>

El lugar de valores numéricos me devuelve :NombreCampo

Si pongo valores numerícos en lugar de (int)$turnoDiaActual[‘Fecha’] por ejemplo si me hace el insert correctamente.

¿Alguien sabe lo que me está pasando?

It’s not a php or yii related issue. It’s a sql query related error so just execute insert query directly on mysql or sql query window so you will get exact errors related to your INSERT query. sound like FOREIGN KEY related issue in your table.

Es lo que comenta Rohit Suthar, el error esta en la query.

Lo que vés son los parámetros pero no ves los valores asignados, para ello en el componente db en config/main.php debes poner:




    'enableProfiling' => true,     //este lo tienes activo porque ves la query

    'enableParamLogging' => true,  //para ver el valor de los parametros pasados por binding.



Así verás los valores reales que estan llegando a la sql, pon esa query directamente en el programa que utilices para BBDD y tendrás el error exacto.

saludos

Ya lo resolví al final era un fallo tonto.

Gracias por el consejo así puedo depurar mejor las aplicaciones.

Saludos.