我在 php 中使用 Laravel 的 Eloquent 来插入和查找记录。
发生的情况是,当我插入一个整数时,这里是 -1001094515039,它会将其更改为 -367135071 并将其存储在字段中。
字段类型是 Bigint,长度为 20 个字符,我尝试将其存储在文本类型字段和 Varchar 字段中,但发生了同样的情况。
另外,当我在 phpMyAdmin 中手动将其更改为 -1001094515039 时,我尝试使用 Eloquent 的 find 方法找到它,但它没有给我该记录!
该脚本在我的第一台使用 PHP 5.X 的服务器上运行,当前服务器使用 php 7.x,我认为可能是这种情况!
我尝试过将 MYSQL_ATTR_MAX_BUFFER_SIZE 设置为 16 * 1024 * 1024 的选项,但这也不起作用。
以下是 PHP int 的最大值、最小值:
最小整数:-9223372036854775808
最大整数:9223372036854775807
有什么解决办法吗?
UPDATE:
这就是我插入数据的方式:
$Group = new Group();
$Group->id = -1001094515039;
$Group->registerdate = "2017-02-03 00:56:01";
$Group->name = "Test Ginger 2";
$Group->owner_id = 81997375;
$Group->save();
var_dump($Group->save()) 结果是:http://textuploader.com/d1oo7 http://textuploader.com/d1oo7
强调:
[attributes:protected] => Array
(
[id] => -1001094515039
[registerdate] => 2017-02-03 00:56:01
[name] => Test Ginger 2
[owner_id] => 81997375
)
显示建表结果:
CREATE TABLE `groups` (
`id` bigint(20) NOT NULL,
`name` varchar(100) CHARACTER SET utf8mb4 NOT NULL,
`owner_id` int(11) NOT NULL,
`acive` tinyint(1) NOT NULL DEFAULT '0',
`autorounds` tinyint(1) NOT NULL DEFAULT '0',
`timezone` varchar(50) NOT NULL DEFAULT 'Pacific/Easter',
`registerdate` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `owner_id` (`owner_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Result of the Insert: