Laravel 从数据库读取 Int 型全部变成了 String 型
5

最近使用 Laravel 写了一段程序,首先程序在 运行环境A 部署,没有发现任何问题返回数据该是 Integer 的还是 Integer。但是最近将程序原封不动的部署在 运行环境B 情况却发生了变化。所有的 Integer 型都变成了 String 型。导致部分 Javascript 部分的 switch 或者 if 出现了不该出现的问题。

虽然通过重构代码可以解决问题,但是由于涉及的代码片段范围比较广泛,不便于修改代码片段解决。不知道有没有什么办法让 运行环境B 中运行的程序也像 运行环境A 中的程序返回 Integer 型呢?

两个运行环境部署方法一致,且数据库字段类型已经检查确认没有问题。查阅了网上部分说明貌似 Laravel 会自动转换类型?感谢大家的指点。

运行环境 A 返回样例

'''
{
"data1": 1,
"data2": 0,
"data3": "example"
}
'''

运行环境 B 返回样例

'''
{
"data1": "1",
"data2": "0",
"data3": "example"
}
'''

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 9
protected $casts = [
    'data1'=> 'int',
];
1年前
leo

安装并启用mysqlnd扩展

1年前
TimJuly

@leo 正解

1年前

@to2False @leo @TimJuly 感谢大家,换成 mysqlnd 解决了。

1年前

可以详细描述一下产生的原因以及为什么mysqlnd能解决吗?

1年前

@leo 正解

1年前

@leo 谢谢。

另外,我找到了一个帖子对各种驱动和API关系介绍的更清晰一些,可供参考。

http://www.druidcoder.cn/2016/05/10/mysql-driver/

1年前
fpy5627

昨天遇到这个问题,一搜就看到这个帖子了- -社区的力量真是强大

1周前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!