2

当我执行findorfetch时,返回的值数组包含我所有列的字符串表示形式,而不管列的数据类型如何。这意味着而不是返回整数列:

array( 'field1' => 1 )

他们最终成为

array( 'field1' => '1' )

这是 CakePHP 的预期行为吗?我是否配置错误?

我想过在afterfind我的模型方法中编写一些代码来调用intval适当的列,但这真的是最好的解决方案吗?CakePHP 是否有更好的方法来处理非字符串列?

4

2 回答 2

1

我也注意到了这一点,显然这是 PDO 将所有内容都转换为字符串的结果。我提交了一张票,希望将来可能会有一个自动强制功能。

尽管客户端可以转换数据,但它不是很“干净”,尤其是当您可能将 api 提供给 3rd 方开发人员时。

于 2012-06-15T05:54:59.303 回答
1

您可以从模型属性 Model::_schema 中找出您的模型中的表中的字段是什么类型的字段。基于此,您可以在Model::afterFind()回调中键入转换字段的值。

您也可以手动检查您希望成为整数的字段,但使用 _schema 可以让您自动化它。例如,您可以将其作为一种行为来执行,并将其附加到需要此功能的每个模型上。

因此,只需遍历结果并检查您想要成为整数的字段并对其进行类型转换。

于 2012-04-13T00:38:28.157 回答