php – find()on model在一个环境中将id作为字符串,在另一个环境中将int作为字符串

我正在使用Laravel 5并拥有一本模型书.

我有两个环境 – 开发和生产

在开发:
修补时,当我这样做

Book::first()

它给了我

App\Book {
     id: 1,
     name: ...

关于生产:
同样的事情给了我

App\Book {
         id: "1",
         name: ...

请注意,id在dev中为int,但在生产时为string

因此,一个条件就好

if($id === $book->id)

它在dev上正常工作,不适用于生产.

知道为什么会这样吗?有没有办法让生产环境给我int而不是字符串?

PS:

>我已经在dev上安装了Laravel,然后通过git将代码提取到生产中.所以我的composer.json和composer.lock在dev和production上完全相同.因此,在生产中运行composer安装应该给我与开发人员相同的环境.
>我正在使用mysql数据库.
>我的开发环境是Laravel的家园.
> Book只是我在这里使用的虚拟模型.我的所有模型的行为方式与上面说明的相同.

最佳答案 显然你不想按照评论中的建议进行任何手动投射.似乎在一台服务器上你错过了
mysqlnd扩展(我需要假设你使用MySQL,因为你没有在你的问题中提到它)是什么导致所有数据类型作为字符串返回.

点赞