【发布时间】:2016-10-28 08:21:27
【问题描述】:
我正在使用 Laravel 5 并且有一个模型 Book。
我有两个环境 - dev 和 production
在开发上:
在tinker,当我这样做时
Book::first()
它给了我
App\Book {
id: 1,
name: ...
关于生产: 同样的事情给了我
App\Book {
id: "1",
name: ...
注意id 在dev 中是int,但在production
string
因此,像这样的条件
if($id === $book->id)
在dev上正常工作,在生产上不工作。
知道为什么会这样吗?有没有办法让我生产环境给我int而不是string?
PS:
- 我已经在 dev 上安装了 Laravel,然后通过 git 在 production 上提取代码。所以我的
composer.json和composer.lock在dev 和production 上是完全相同的。所以在 production 上运行composer install应该会给我与 dev 上相同的环境。 - 我正在使用
mysql数据库。 - 我的dev环境是Laravel的
homestead。 -
Book只是我在这里使用的一个虚拟模型。我所有模型的行为方式都与上述相同。
【问题讨论】:
-
不确定这是什么原因,但为
id设置您自己的cast 可能会解决问题。 -
两个环境中的php版本是否相同?
-
@Amir 为什么我没有想到呢?我有不同版本的 php - dev 上的
5.6.7和 production 上的5.5.9。这是问题吗? -
@linuxartisan:也许,试试看
-
if($id == (int) $book->id)
标签: php mysql laravel laravel-5