Actualmente Yii en su versión mas reciente (1.1.14) y por lo menos desde la versión 1.0, trae por defecto un inconveniente para el trabajo de inserción en tipos de datos BOOLEAN en el motor de datos PostgreSQL. A continuación un breve recorrido de la problemática, incluyendo la resolución del problema. El ejemplo es en base a: Debian Wheezy, Apache 2.2.22, PHP 5.4.4, PostgreSQL 9.2, Yii 1.1.14.
.
CREATE TABLE tipo_de_datos
(
id integer NOT NULL DEFAULT nextval(‘»tipo-de-datos_id_seq»‘::regclass), — clave primaria
nombre character varying(60) NOT NULL, — campo tipo character varying de 60
valido boolean NOT NULL DEFAULT true, — tipo boolean TRUE o FALSE
creado_en timestamp without time zone, — fecha y hora de creacion del registro timestamp without time zone
actualizado_en timestamp without time zone NOT NULL DEFAULT now(), — fecha y hora de creacion del registro timestamp without time zone
CONSTRAINT pk_id PRIMARY KEY (id)
)
E.
..:: El error y objetivo de esta entrada:
LINE 1: … «nombre», «creado_en», «actualizado_en») VALUES (1, ‘prueba…
^
HINT: Necesitará reescribir la expresión o aplicarle una conversión de tipo.. The SQL statement executed was: INSERT INTO «tipo_de_datos» («valido», «nombre», «creado_en», «actualizado_en») VALUES (:yp0, :yp1, :yp2, :yp3)
.
.
..:: Solución
Comentar la linea: ‘emulatePrepare’ => true, en protected/config/main.php
Para saber mas sobre emulatePrepare y el por que quitarlo visite los siguientes enlaces:
http://www.yiiframework.com/doc/api/1.1/CDbConnection#emulatePrepare-detail
http://www.yiiframework.com/forum/index.php/topic/33152-database-error-convert-boolean-to-integer/
https://bugs.php.net/bug.php?id=62593
Una vez comentada dicha linea (por defecto en el config/main.php en la linea 57) debería guardar el registro.
.
Excelente funciona bien gracias….