当我执行find
或fetch
时,返回的值数组包含我所有列的字符串表示形式,而不管列的数据类型如何。这意味着返回整数列而不是:
array( 'field1' => 1 )
他们最终成为
array( 'field1' => '1' )
CakePHP的预期行为是什么?我错误配置了什么吗?
我考虑过在我的模型的afterfind
方法中编写一些代码来在适当的列上调用intval
,但这真的是最好的解决方案吗? CakePHP有更好的方法来处理非字符串列吗?
答案 0 :(得分:1)
您可以从模型属性Model :: _ schema中找出模型表中字段的类型。在此基础上,您可以在Model::afterFind()回调中为字段输入值。
您也可以手动检查要整数的字段,但使用_schema可以让它自动化。例如,您可以将此操作作为一种行为,并将其附加到需要此功能的每个模型。
所以简单地遍历结果并检查你想要整数的字段并输入它们。
答案 1 :(得分:1)
我也注意到了这一点,显然这是PDO将所有内容转换为字符串的结果。我提交了ticket,希望将来可能会出现强制功能的自动功能。
虽然客户端可以转换数据,但它并不是非常“干净”,特别是当您向第三方开发人员提供api时。