Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.2雄辩的save()方法Oracle中的存储编号0变为4294967296_Php_Oracle_Laravel_Laravel 5.2 - Fatal编程技术网

Php Laravel 5.2雄辩的save()方法Oracle中的存储编号0变为4294967296

Php Laravel 5.2雄辩的save()方法Oracle中的存储编号0变为4294967296,php,oracle,laravel,laravel-5.2,Php,Oracle,Laravel,Laravel 5.2,使用雄辩的save()方法保存数据时出现问题 例如,当我插入一个像0这样的数字时,表中的数字变成4294967296 这是我的密码: $user = new User; $user->username = 'lolol'; $user->name = 'lolol'; $user->email = 'lolol@lolol.com'; $user->domain = 'lolol'; $user->active_directory = 0; $user->s

使用雄辩的save()方法保存数据时出现问题

例如,当我插入一个像0这样的数字时,表中的数字变成4294967296

这是我的密码:

$user = new User;
$user->username = 'lolol';
$user->name = 'lolol';
$user->email = 'lolol@lolol.com';
$user->domain = 'lolol';
$user->active_directory = 0;
$user->save();
但是,当我使用这样的原始查询时没有问题:

DB::insert('insert into users (id, username, name, email, active_directory, domain) values (?, ?, ?, ?, ?, ?)', [10,'dayle', 'Dayle', 'dayle', '0', 'esdm']);
它将在表中插入0

有没有办法解决这个问题


感谢您的帮助和回答。

此处可能确实存在错误,但考虑将查询传递给字符串而不是整数,一个简单的解决方法是在用户模型中实现setter mutator,在保存之前将active_目录属性强制转换为字符串

//other User model methods....
public function setActiveDirectoryAttribute($attrValue){
    $this->attributes['active_directory'] = (string) $attrValue;
}

这里可能确实有一个bug,但是考虑到将查询传递给字符串而不是整数是可行的,一个简单的解决方法是在用户模型中实现setter mutator,它在保存之前将active_目录属性转换为字符串

//other User model methods....
public function setActiveDirectoryAttribute($attrValue){
    $this->attributes['active_directory'] = (string) $attrValue;
}


你能发布你的表设计吗?在你的查询中插入一个带有elqount的字符串,它是0这是我的表迁移设计:
$table->increments('id')$表->字符串('username',30)->unique()$表->字符串('name',100)$表->字符串('email')->unique()$表->字符串('password')$表->整数('active_目录')$表->记忆库()$表->时间戳()当我使用save()方法在表中存储数字0时,它变成4294967296。但是,当我使用原始查询时,它将存储0,而不是4294967296。如何解决这个问题?因为我想在laravel中使用save()方法而不是原始查询。4294967296不是一个随机数。它是32位整数的最大值。因此,您可能遇到了一些溢出错误。您可以发布您的表设计吗?在您的查询中插入一个带有elqount的字符串,它是0这是我的表迁移设计:
$table->increments('id')$表->字符串('username',30)->unique()$表->字符串('name',100)$表->字符串('email')->unique()$表->字符串('password')$表->整数('active_目录')$表->记忆库()$表->时间戳()当我使用save()方法在表中存储数字0时,它变成4294967296。但是,当我使用原始查询时,它将存储0,而不是4294967296。如何解决这个问题?因为我想在laravel中使用save()方法而不是原始查询。4294967296不是一个随机数。它是32位整数的最大值。因此,您可能遇到了一些溢出错误。它不起作用。它显示错误消息:
ORA-01400:无法插入NULL
。我尝试使用:
protected$casts=['id'=>'integer','active_directory'=>'integer',]仍然不起作用。很抱歉,您必须使用$this->attributes['active_directory']='value'设置属性才能使强制转换生效。编辑了我的评论。另外,$cast也不起作用,因为它仅在从数据库获取数据到模型时使用,而不是在设置它时使用。Cool。它起作用了。你真的救了我一天。非常感谢。谢谢你接受我的回答。顺便说一句,我感觉你的dbschema有点错误。您能检查一下您的数据库结构(在数据库本身中,而不是在迁移中)并告诉我们您的列到底是什么类型的吗?谢谢当然这是我的数据库结构:
“ID”编号(10,0),“用户名”VARCHAR2(30字节),“名称”VARCHAR2(100字节),“电子邮件”VARCHAR2(255字节),“密码”VARCHAR2(255字节),“活动目录”编号(10,0),“状态”VARCHAR2(10字节)默认的“ACTV”,“记住令牌”VARCHAR2(100字节),“创建时间戳(6)”,“更新时间戳(6),“DOMAIN”VARCHAR2(50字节)
。奇怪的是,当我尝试在mutator中强制转换为整数时,它不起作用。相反,如果我将其强制转换为字符串,它将起作用。它不起作用。它显示错误消息:
ORA-01400:无法插入NULL
。我尝试使用:
protected$casts=['id'=>'integer','active_directory'=>'integer',];
仍然不工作。很抱歉,您必须使用$this->attributes['active_directory']设置属性='value'以使cast工作。编辑了我的评论。另外$cast也不会工作,因为它只在从数据库获取数据到模型时使用,而不是在设置它时使用。很酷。它工作。你真的节省了我的时间。非常感谢。谢谢你接受我的回答。顺便说一句,我感觉你的dbschema有点错误。你能检查一下你的数据库结构吗(在数据库本身中,而不是在迁移中)并告诉我们您的列的具体类型?谢谢!当然。这是我的数据库结构:
“ID”编号(10,0)、“USERNAME”VARCHAR2(30字节)、“NAME”VARCHAR2(100字节)、“EMAIL”VARCHAR2(255字节)、“password”VARCHAR2(255字节)、“ACTIVE\u目录”编号(10,0)、“STATUS”VARCHAR2(10字节)默认的'ACTV',“memory_TOKEN”VARCHAR2(100字节),“CREATED_AT”TIMESTAMP(6),“UPDATED_AT”TIMESTAMP(6),“DOMAIN”VARCHAR2(50字节)
。奇怪的是,当我尝试在mutator中转换为整数时,它不起作用。相反,如果我将它转换为字符串,它就会起作用。