Int在CentOS 7.1和Laravel 5.1上以PHP形式处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Int在CentOS 7.1和Laravel 5.1上以PHP形式处理相关的知识,希望对你有一定的参考价值。

我在Windows系统上开发并使用!==比较很多,以确保值和类型都符合预期。我只是遇到了问题(比较失败),并且发现int(在mysql中)类型的值被处理为字符串。

在Windows上它看起来像这样:

Order {#488 ▼
  #table: "orders"
  #guarded: array:1 [▶]
  #hidden: []
  #fillable: array:9 [▶]
  #dates: array:1 [▶]
  #connection: null
  #primaryKey: "id"
  #perPage: 15
  +incrementing: true
  +timestamps: true
  #attributes: array:14 [▼
    "id" => 6
    "currency_id" => 1
    "user_id" => 1
    "coupon_id" => 1
    "status" => 2
    "created_at" => "2017-06-26 00:37:44"
    "updated_at" => "2017-06-26 00:37:50"
    "deleted_at" => null
  ]

在CentOS上像这样:

Order {#488 ▼
  #table: "orders"
  #guarded: array:1 [▶]
  #hidden: []
  #fillable: array:9 [▶]
  #dates: array:1 [▶]
  #connection: null
  #primaryKey: "id"
  #perPage: 15
  +incrementing: true
  +timestamps: true
  #attributes: array:14 [▼
    "id" => "6"
    "currency_id" => "1"
    "user_id" => "1"
    "coupon_id" => "1"
    "status" => "2"
    "created_at" => "2017-06-26 00:37:44"
    "updated_at" => "2017-06-26 00:37:50"
    "deleted_at" => null
  ]

我真的不知道是什么原因引起的。请告诉我需要哪些其他信息才能找到答案。由于我根本不知道,我不确切知道可能相关的内容。

附加信息:

我正在使用Laravel 5.1并使用Laravel的dd()方法打印此信息。数据是Eloquent Model的一个实例。

答案

问题可能只是与数据库交互的底层扩展稍有不同,或者在它与代码之间的抽象层中存在一些实现差异(版本差异?)。这种有限的信息很难说清楚。

但是,通常,在php中,您应该假设数据库值作为字符串传递给您,即使它们实际上是数据库中的整数/浮点数/布尔值。假设您需要自己进行类型检查和(如果需要)类型转换。

我也提醒你不要过多严格检查PHP。我明白你为什么要这样做,而且在大多数其他语言中我会和你在一起,但PHP的一个定义特征是它对本机类型的漠不关心,它能够自动地在它们之间进行操作,所以在那种语言中你不应该试图过分强迫类型严格。

以上是关于Int在CentOS 7.1和Laravel 5.1上以PHP形式处理的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.5 项目下载文件而不是在浏览器中打开它们 PHP 7.1 MAC

Linux CentOS 7.1安装mysql 5.7.21

Laravel 安装程序 v1.4.1 与 PHP 7.1 包不兼容?

Install PHP 7, Apache, MySQL 5.6 on CentOS / RHEL 7.1 & 6.7 + Wordpress

CentOS 7.1使用yum安装MySql5.6.24

centos 7.1 apache 源码编译安装