[CakePHP-esp] Virtual Fields, campos Integer en MySQL y UTF-8

195 views
Skip to first unread message

Gabriel Arellano

unread,
May 4, 2010, 10:08:01 PM5/4/10
to CakePHP en Español
Por si se les presenta el mismo problema...

Si emplean virtual fields en los modelos y para ello usan la función
CONCAT de MySQL, tengan en cuenta que si alguno de los campos a
concatenar es de tipo Integer tendrán problemas con caracteres
especiales (letras con tilde, eñe, etcétera).

Para evitarlo es necesario convertir el campo Integer a Char UTF-8...

Por ejemplo si tenemos dos campos, cod_taller (integer) y razon_social
(varchar):

var $virtualFields = array('nombre' => 'CONCAT(Taller.cod_taller, " -
", Taller.razon_social)');

CONCAT de MySQL retornará una cadena no UTF-8... para solucionarlo, es
necesario hacer un CAST del campo integer a varchar UTF-8, como se
muestra a continuación:

var $virtualFields = array('nombre' => 'CONCAT(CAST(Taller.cod_taller
AS CHAR CHARACTER SET utf8 ), " - " , Taller.razon_social)');

Saludos.

--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP en Español" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-esp...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/cakephp-esp?hl=es.

JONNATTAN JAIR CHOQUE MARTINEZ

unread,
Nov 10, 2014, 10:55:21 PM11/10/14
to cakep...@googlegroups.com, gabriel...@gmail.com
Hola, espero puedan ayudarme con este error, tengo este codigo:
public $virtualFields = array('nombre_completo' => 'CONCAT(Mesero.nombre, " ", Mesero.apellido);

Pero al momento de actualizar la pagina, me sale el siguente error: Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS `Mesero__nombre_completo` FROM `cake`.`mesas` AS `Mesa` LEFT JOIN `cake`.`me' at line 1
pero

El servicio de correo misena es soportado tecnológicamente por © Google y ofrecido por el Servicio Nacional de Aprendizaje – SENA de manera gratuita a todos los colombianos y en especial a los aprendices e instructores de Programas de Formación Titulada y Complementaria. Los contenidos, textos, imágenes, archivos y puntos de vista enviados en este mensaje son responsabilidad exclusiva del remitente y no reflejan ni comprometen oficialmente a la institución. No se autoriza el uso de esta herramienta para el intercambio de correos masivos, cadenas o spam, ni de mensajes ofensivos, de carácter político, sexual o religioso, con fines de lucro, con propósitos delictivos o cualquier otro mensaje que se considere indebido o que vaya en contra de la Ley.

Reply all
Reply to author
Forward
0 new messages