0%

ThinkPHP 转换数据库查询出的数据到对应类型

默认情况下,Thinkphp查询出的所有字段值类型都是String,如果是开发web,当然没问题,但开发接口,就很麻烦了,总不能让客户端去转类型。 ThinkPHP的Model.class.php时,提供了_parseType方法,可以在查询完以后,做类型转换,但框架没有这么干,需要我们手工调一下。 写一个Model基类: BaseModel.class.php,因为我用到关联查询,所以继承自RelationModel

use Think\Model;
use Think\Model\RelationModel;

class BaseModel extends RelationModel
{
//在查询后,转换数据类型
protected function _after_select(&$resultSet, $options)
{
parent::_after_select($resultSet,$options);
foreach ($resultSet as &$result) {
$this->_after_find($result, $options);
}
}
protected function _after_find(&$result, $options)
{
parent::_after_find($result,$options);
foreach ($result as $field => $value) {
$this->_parseType($result, $field);
}

}

}

所有的Model类继承自BaseModel. 本来,这样已经搞定了,但发现Model.class.php的_parseType方法里有个低级bug,看图: thinkphpbug