Laravel Model保存后输入错误的ID

时间:2016-02-11 14:12:16

标签: laravel laravel-5.1

我有一台运行在开发服务器和生产服务器上的Laravel应用程序(5.1.28)。

dev的: php 5.6.13 mysql 5.6.19

PROD: php 5.6.16 mysql 5.5.27

mysql表: CREATE TABLE testquestions ( id bigint(20) UNSIGNED NOT NULL, testquestiongroup_id bigint(20) NOT NULL, description varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, type varchar(255) COLLATE utf8_unicode_ci NOT NULL, created_at timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', updated_at timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

以下php代码; testquestions

我的dev和prod环境中的代码是相同的。 Als数据库内容相同,从prod复制到dev。

当我运行此代码时,我的$ question对象将从mysql(?)返回一个错误的ID。当我检查MySQL时,有一个带有(好)ID的新记录,但是这个ID不会返回给我的对象。它一遍又一遍地得到相同的错误ID。错误的ID来自4个月前添加的对象。

在我的开发环境中不会出现此问题。

MySQL中是否存在一些错误或者我做错了什么?感谢

更新12febr

问题变得越来越怪异! 插入我的代码后,我尝试了以下代码($ question-> save())

id

我的问题对象提供了与\ DB :: getPdo() - > lastInsertId()不同的ID($ question-> id)。 $ question对象返回的ID保留错误的ID。 lastInsertId函数返回正确的ID!

该字段是BIGINT(20)是否重要?

2 个答案:

答案 0 :(得分:0)

我在laravel / eloquent中遇到了一些id问题。

在特定模型中将增量变量设置为false对我来说大部分时间都有帮助。

也许这对你也有帮助。

答案 1 :(得分:0)

我有一些类似的问题,最后解决了。不一样,但它也是关于 laravel-model-gets-wrong-id-after-saving ,所以我希望我可以在这里发帖,让有人解决问题。

我的解决方案:检查DB::getPdo()->lastInsertId()。如果它也是错误的,那么检查DB::listen回调中是否有一些sql insert语句。

我是个傻瓜,因为我试图使用insert语句在DB :: listen中记录我的sql语句。这就是问题所在。