Laravel 5.2 eloquent save()方法在Oracle中存储编号0变为4294967296

时间:2017-05-12 06:35:42

标签: php oracle laravel laravel-5.2

使用eloquent save()方法保存数据时遇到问题。

例如,当我插入一个0之类的数字时,表中的数字变为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。

有什么方法可以解决这个问题吗?

感谢您的帮助和回答。

1 个答案:

答案 0 :(得分:0)

这里可能确实存在一个错误,但考虑到将字符串而不是整数传递给查询,一个简单的解决方法是在User模型中实现一个setter mutator,它会在保存之前将您的active_directory属性强制转换为字符串。 / p>

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