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

时间:2016-09-28 07:00:12

标签: php mysql cakephp

我正在使用Cakephp 3.2.7作为框架并使用select别名创建查询。

 $posts = $this->Posts->find()
 ->select(['id' => 'Posts.id','userid'=>"Posts.user_id"])->toArray();

我希望id为字符串而非整数(mysql中的列类型为整数)并将userid作为整数(mysql中的列类型也是整数)但使用别名将其转换为字符串。

有没有办法以字符串形式获取所有模型中的所有Id列,或者至少可以在查询中定义数据类型?

2 个答案:

答案 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以字符串形式返回。