此文章发布于80个月前,部分信息可能已经过时,请自行斟酌确认。
微软的pdo_SqlSrv驱动只支持将decimal类型转为php的string字符串,不支持转float,官方在github上有回答,因为如果转换可能造成精度不准确(没仔细研究)。
官方给出的方案是自己下载 SqlSrv 源码修改编译。
编译教程:
ThinkPHP 修改方法
修改:thinkphp/library/think/db/connector/Sqlsrv.php,将以下参数设置成false(默认为true)
PDO::ATTR_STRINGIFY_FETCHES => false,另外在database.php数据库配置文件中增加以下两个参数可以解决小数小于1时前面的0丢失的情况。
PDO::SQLSRV_ATTR_FORMAT_DECIMALS => true,
PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE => true,