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 协议》,转载必须注明作者和本文链接
推荐文章: