Laravel response 返回的值全部处理为字符串
laravel response 返回的值全部处理为字符串
新公司接口返回格式 全部为字符串类型 最近打算用laravel 重构公司现有对app端接口 先有解决方案如下
1.config/databases目录下 在mysql 配置中在options中增加
PDO::ATTR_STRINGIFY_FETCHES => env('ATTR_STRINGIFY_FETCHES')
2.在model 中设置
protected $casts = ['id' => 'string'];
后记
百度搜索 搜到答案在 response()->json()
中添加 第四个参数为 JSON_NUMERIC_CHECK
经测试 这个应该是把字符串格式数字转成int 类型 解决失败\
后百度搜索发现\
问答:Laravel 从数据库读取 Int 型全部变成了 String 型帖子
发现 此贴是全部转成string类型了 这不正是我想要的么!
看回答区发现这个帖子的解决方案 是安装mysqld 驱动 瞬间来了灵感
但在配置文件中 加上 pdo 常量后 发现打印model 确实全部转成字符串了
但是 使用 toArray 或者 toJson 等格式化处理后 id 变成了int类型
在model 中加上 protected $casts = ['id' => 'string']
又把id变回string类型 估计是laravel 在处理model 的时候 改变了此值类型
疑问
1.更改此项pdo配置 是否会影响 ROM和Collection 处理数据的性能?\
2.此解决方案和自己循环数据改成string对比哪个更好?\
3.有没有更好的解决方案呢?
本作品采用《CC 协议》,转载必须注明作者和本文链接
mark住一波
改了这个配置更好