Laravel 5.2 eloquent save() 方法在 Oracle 中存储编号 0 变为 4294967296
Laravel 5.2 eloquent save() method store number 0 in Oracle become 4294967296
我在使用 eloquent save() 方法保存数据时遇到问题。
例如,当我插入一个数字,如 0,table 中的数字变为 4294967296。
oracle table
这是我的代码:
$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 插入 table。
有什么办法可以解决这个问题吗?
感谢您的帮助和回答。
这里可能确实存在一个错误,但考虑到向查询传递一个字符串而不是一个整数是可行的,一个简单的解决方法是在你的用户模型中实现一个 setter 突变器来转换你的 active_directory 在保存之前将其属性设置为字符串。
//other User model methods....
public function setActiveDirectoryAttribute($attrValue){
$this->attributes['active_directory'] = (string) $attrValue;
}
我在使用 eloquent save() 方法保存数据时遇到问题。
例如,当我插入一个数字,如 0,table 中的数字变为 4294967296。
oracle table
这是我的代码:
$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 插入 table。
有什么办法可以解决这个问题吗?
感谢您的帮助和回答。
这里可能确实存在一个错误,但考虑到向查询传递一个字符串而不是一个整数是可行的,一个简单的解决方法是在你的用户模型中实现一个 setter 突变器来转换你的 active_directory 在保存之前将其属性设置为字符串。
//other User model methods....
public function setActiveDirectoryAttribute($attrValue){
$this->attributes['active_directory'] = (string) $attrValue;
}