【问题标题】:Laravel return int on Windows and return string on LinuxLaravel 在 Windows 上返回 int 在 Linux 上返回字符串
【发布时间】:2023-03-25 11:51:01
【问题描述】:

我有 MySql 云主机,

表(成员) - 字段(id、名称、余额)

当我在 Windows 机器上使用 Laravel 访问时,它们 (id, balance) 返回为 Int,

但是

当我在 Linux 机器上使用 Laravel 访问时,所有字段都返回为字符串。

所以这个问题会导致计算操作错误,因为它们读取为字符串。 有什么方法可以在不使用 $casts 的情况下解决这个问题?

【问题讨论】:

标签: laravel


【解决方案1】:

MySQL 驱动程序似乎有问题。 Laravel 默认使用准备好的语句。您有两种方法:调整您的 Linux 设置或在代码中使用转换(强制转换或 (int))。

请看ticked answer here。你需要调PDO::ATTR_EMULATE_PREPARES

【讨论】:

  • 我没有使用浏览器,我使用 Postman,如果 U 使用 linux 所有集合都返回为字符串,对吗?我想以整数返回
  • 看,你是说你在尝试Member::all()。这将返回所有成员的集合,而不是整数或字符串。你没有再举一个例子。
  • 在 Linux 和 Windows 中尝试echo gettype($yourCollection->user_id);
  • 在 linux 字符串上,在 windows 整数上
  • 好的。你在 Linux 服务器和 Windows 服务器上运行 Laravel 吗?或者服务器是相同的,您正试图从 Linux/Winodws 家用 PC 访问它?
【解决方案2】:

听上去,这与 MySQL 和您使用的驱动程序有关。

除此之外,这不是问题,PHP 是一种动态类型语言,因此返回字符串没有区别,除非您通过is_int() 运行该值,这将明确检查它确实是一个整数。如果您正在这样做,请不要使用is_number(),因为它可以处理所有类型。

【讨论】:

    猜你喜欢
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2014-03-24
    • 1970-01-01
    • 2015-10-01
    • 2016-05-15
    相关资源
    最近更新 更多