Doctrine orm 当我的变量总是转换为2147483647时,这意味着什么。。。。。。?

Doctrine orm 当我的变量总是转换为2147483647时,这意味着什么。。。。。。?,doctrine-orm,Doctrine Orm,我将以下代码作为我的实体: /** * * @Entity * @Table(name="group") * **/ Class Group { /** * * @Column(type="string", nullable=true) **/ private $phone; (etc...) __get( $var ) { return $this->$var; } __set( $var, $val ){ $this->$var = $val; } 然

我将以下代码作为我的实体:

/**
 *
 * @Entity
 * @Table(name="group")
 *
 **/
Class Group {

/**
 *
 * @Column(type="string", nullable=true)
 **/
 private $phone;

(etc...)

__get( $var ) {
return $this->$var;
}
__set( $var, $val ){
 $this->$var = $val;
}
然后我尝试用一个大于九位数的数字来修改它。比如说,

$group->phone = 5147811326;
$phone设置为
2147483647
1111111111
也会出现同样的情况(转换为
2147483647

如果我尝试
514781
,它可以保持数字不变。但超过9位的数字,它只是转换。我最初将mysql列作为一个整数,但将其转换为字符串…仍然是一个问题


发生了什么事

这意味着您使用的数据类型是32位。等于231− 1.

这意味着您使用的数据类型是32位。等于231− 1.

数字“5147811326”不能存储在32位整数中,因为没有足够的位。32位整数的最高二进制值为“11111111111111111111111111”(或十进制中的2147483647)。请尝试输入64位整数或字符串来存储电话号码。

无法将号码“5147811326”存储在32位整数中,因为没有足够的位。32位整数的最高二进制值为“11111111111111111111111111”(或十进制中的2147483647)。请尝试输入64位整数或字符串来存储电话号码。

我对doctrine2了解不多,但2147483647看起来像2^31-1或带符号整数最大值。。5147811326转换为它是合乎逻辑的,因为它更大。1111111111小于2147483647,所以很奇怪。我不知道doctrine2是什么,但我知道你得到的数字是0x7FFFFFFF-你可能遇到了某种数字溢出。除了溢出,我想不出其他问题。您试图压缩的数据超出了所使用变量的大小。我对doctrine2了解不多,但2147483647看起来像2^31-1或有符号整数最大值。。5147811326转换为它是合乎逻辑的,因为它更大。1111111111小于2147483647,所以很奇怪。我不知道doctrine2是什么,但我知道你得到的数字是0x7FFFFFFF-你可能遇到了某种数字溢出。除了溢出,我想不出其他问题。您试图压缩的数据超出了所使用变量的大小。那么,为什么1111会转换为该变量呢?它适合32位。是的,我认为这是正确的。我现在只使用了一个字符串,它工作得更好。痛苦的时刻已经过去了!谢谢111111111…当它转换时,doctring可能会对它做些什么。由于ORM位于php之上,我敢肯定它在转换时使用了某种内存,这可能是一个错误。那么为什么1111会转换成这样呢?它适合32位。是的,我认为这是正确的。我现在只使用了一个字符串,它工作得更好。痛苦的时刻已经过去了!谢谢111111111…当它转换时,doctring可能会对它做些什么。由于ORM位于php之上,我确信它在转换时使用了某种内存,这可能是一个错误。