Error guardar modelo user acciones estudios

Buenas tengo el siguiente error


alguien me puede dar una mano?
tengo la tabla definida de esta manera

CREATE TABLE user_acciones_estudios (
id int(11) NOT NULL,
fk_user int(11) NOT NULL,
fk_estudios int(11) NOT NULL,
fk_acciones int(11) NOT NULL,
created_at timestamp DEFAULT NULL,
modified_at timestamp DEFAULT NULL,
deleted_at timestamp DEFAULT NULL,
borrado tinyint(1) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

1 Like

El error dice que el string ‘CURRENT_TIMESTAMP’ no es un valor correcto para el campo yp1, que es ‘modified_at’ y está esperando un timestamp.

Si te fijas en la sentencia ejecutada, el campo :yp0 (created_at) tiene un valor de timestamp “correcto” (‘2022-12-16 16:54:26’) pero el modified_at no interpreta correctamente ese CURRENT_TIMESTAMP, que es una función de SQL, y lo intenta meter como un string así sin anestesia.

En tu código, puedes apañarlo utilizando php para pasar la fecha.

$model->modified_at = date ('Y-m-d H:s:i');

Escribo de memoria, pero creo que ese formato sería correcto.

Como alternativa, porque hay varias formas de hacer esto, Yii2 tiene un behavior específico que debería facilitar estas cosas, que es el timestamp behavior.

Algo así debería funcionar:

namespace app\models\AccionesEstudios;

use yii\db\ActiveRecord;
use yii\behaviors\TimestampBehavior;

class AccionesEstudios extends ActiveRecord
{
    // ...

    public function behaviors()
    {
        return [
            [
                'class' => TimestampBehavior::class,
                'attributes' => [
                    ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'modified_at'],
                    ActiveRecord::EVENT_BEFORE_UPDATE => ['modified_at'],
                ],
                // Para usar datetime en lugar de timestamp se añade esto, pero a mi nunca me ha
               //  funcionado
                // 'value' => new Expression('NOW()'),
            ],
        ];
    }
}
1 Like

Perfecto clarisimo y en el caso que sea yii 1.1
usamos el evento del model o before_insert y before update?

1 Like

Pues la verdad es que para Yii 1.1 no sabría decirte, pero si tienes eventos en el model puedes usarlos para hacer lo mismo e insertar a mano las fechas que toquen cuando crees o actualices un registro.