在cakephp中使用别名时,如何指定查询选择的字段类型


How specify field type for query select when using alias in cakephp?

我使用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返回字符串