我正在使用Cakephp 3.2.7作为框架并使用select别名创建查询。
$posts = $this->Posts->find()
->select(['id' => 'Posts.id','userid'=>"Posts.user_id"])->toArray();
我希望id为字符串而非整数(mysql中的列类型为整数)并将userid作为整数(mysql中的列类型也是整数)但使用别名将其转换为字符串。
有没有办法以字符串形式获取所有模型中的所有Id列,或者至少可以在查询中定义数据类型?
答案 0 :(得分:0)
其实我同意@drmonkeyninja,我不知道你为什么要这样做。
另外,我并不保证我要写的东西是安全的,并且是一种干净的方式来实现你想要做的事情。
无论如何,您可以修改表架构并更改列类型。请参阅manual
$this->Posts->schema()->addColumn('userid', [
'type' => 'integer',
])
->addColumn('id', [
'type' => 'string',
]);
答案 1 :(得分:0)
最后我找到了解决方案。我在post class的实体中添加了一个mutator。
protected function _getId()
{
return (string)$this->_properties['id'];
}
强制id以字符串形式返回。