我使用Cakephp 3.2.7作为框架,并创建一个查询与选择别名。
$posts = $this->Posts->find()
->select(['id' => 'Posts.id','userid'=>"Posts.user_id"])->toArray();
我想把id作为字符串而不是整数(mysql的列类型是整数),并把userid作为整数(mysql的列类型也是整数),但使用别名将其转换为字符串。
是否有任何方法来获取所有Id列在所有的模型作为字符串或至少可以在查询中定义数据类型?
实际上我同意@drmonkeyninja,我不知道你为什么要这样做。
我也不保证我要写的是安全的,是一个干净的方式来实现你想要做的。
无论如何,您可以修改表模式并更改列类型。参见手册
$this->Posts->schema()->addColumn('userid', [
'type' => 'integer',
])
->addColumn('id', [
'type' => 'string',
]);
我终于找到了解决办法。我给post类的实体添加了一个mutator
protected function _getId()
{
return (string)$this->_properties['id'];
}
强制id返回字符串