Laravel 的 DB 查询是如何实现字段类型自动转的?

已经解决了

原来是PDO 设置问题, laravel中的 Illuminate\Database\Connectors\Connector 有:

protected $options = array(
        PDO::ATTR_CASE => PDO::CASE_NATURAL,
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
        PDO::ATTR_STRINGIFY_FETCHES => false,
        PDO::ATTR_EMULATE_PREPARES => false,
);

关键的一项: PDO::ATTR_STRINGIFY_FETCHES => false

举个例子,有一条sql如:
select * from factory limit 1

用php PDO查出结果集如下:

file

注意绿色框里的值均为 string 型;

但是用 laravel的方式,DB::connection()->select("select * from factory limit 1");
结果集如下:

file

同样结果,不同的是字段值的类型不同,原生的PDO 均是string ,但laravel 会转成相应的 int/float 型。。。

laravel 是如何做到的?debug 好久都没找出原因,求指教~

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!