/ / ¿Cómo intercepto el campo recuperado en CakePHP 3? - cakephp, orm, conversión de tipo, cakephp-3.0

¿Cómo intercepto el campo recuperado en CakePHP 3? - cakephp, orm, conversión de tipos, cakephp-3.0

EDITAR / ACLARAR: Esta pregunta es dónde conectar la conversión a CakePHP 3.x. Sé cómo convertir bin a hexadecimal. La pregunta es dónde, en la estructura del modelo CakePHP 3.x, interceptar y cambiar las filas de resultados.

Estoy almacenando datos UUID como varbinary (16) en MySQLmesas. Esta NO es una clave primaria. Cuando leo este campo, "me gustaría convertirlo a la cadena estándar de 36 caracteres (binario a hexadecimal con guiones insertados) en PHP. En CakePHP 2.x hubiera usado la devolución de llamada afterFind (). El CakePHP 3 la documentación de .x dice a usar Mapa / Reducir, pero eso significaría ubicar cada find () en el código. Parece que debería poder lograr esto en el modelo, tal vez como un comportamiento de CakePHP 3.

La mesa se ve así:

create table `books` (
`id` int(10) unsigned not null auto_increment,
`my_uuid` varbinary(16) not null,
`created` timestamp not null default current_timestamp on update current_timestamp,
primary key (`id`),
) engine=InnoDB;

Tenga en cuenta que solo estoy preguntando sobre la lectura delbase de datos. Insertar y actualizar funcionan bien. Me gustaría convertir de binario a cadena en lectura, y creo que debería hacerlo en la capa Modelo (tabla / entidad).

Respuestas

0 para la respuesta № 1

Un tipo de base de datos personalizado resuelve la situación. Sigue el ejemplo en Tipos de datos personalizados. Gracias @ndm por la solución.