EDIT / CLARIFICATION:这个问题是询问将转换挂钩到CakePHP 3.x.我知道如何将bin转换为十六进制。问题是在CakePHP 3.x模型结构中拦截和更改结果行。
我将UUID数据作为varbinary(16)存储在MySQL表中。这不是主键。当我读到这个字段时,我想在PHP中将它转换为标准的36个字符的字符串(二进制到十六进制,插入连字符)。在CakePHP 2.x中,我会使用afterFind()回调。 CakePHP 3.x文档对use Map/Reduce说,但这意味着在代码中找到每个find()。看起来我应该能够在模型中实现这一点,可能是作为CakePHP 3行为。
表格如下:
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;
请注意,我只是要求从数据库中读取数据。插入和更新工作正常。我想在读取时从二进制转换为字符串,我想我应该在Model层(表/实体)中这样做。