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;
}