php - laravel 雄辩模型无法存储十进制值
问题描述
我正在使用 Laravel 5.7 和 PHP 7.3,我必须在数据库中存储十进制字段
表列描述如下
'commission_percentage', 'decimal(12,4)'
'commission_amount', 'decimal(12,4)'
我正在尝试使用 eloquent 模型将此列的十进制值存储在 mysql 中。
这是示例代码。
$per = 10.23;
$commission = 2.1234;
$createArr = [
'commission_percentage' => $per,
'commission_amount' => $commission
];
MyModel::create($createArr);
我雄辩的模型看起来像
class MyModel extends Model
{
protected $table = 'my_table';
protected $guarded = ['id'];
protected $casts = [
'commission_percentage' => 'decimal:4',
'commission_amount' => 'decimal:4'
];
}
而且我也试过
protected $casts = [
'commission_percentage' => 'float',
'commission_amount' => 'float'
];
但没有运气。我仍然在数据库中获得 10.0000 和 2.0000。
即使我尝试使用原始查询插入值
DB::insert('insert into my_table (commission_percentage,commission_amount ) values(?, ?)', [$per, $commission]);
但是运气不好,因为我仍然在数据库中获得 10.0000 和 2.0000。
解决方案
我为此找到的解决方法是将变量类型转换为“字符串”
$per = 10.23;
$commission = 2.1234;
$createArr = [
'commission_percentage' => (string) $per,
'commission_amount' => (string) $commission
];
MyModel::create($createArr);
推荐阅读
- algorithm - 时间复杂度和theta算法
- eclipse - Eclipse - 如何创建 SQL 文件?
- azure - Azure 数据工厂 - Azure SQL 托管服务不正确的输出列类型
- python - 如何将 m*n 列表转换为 n*m 列表?
- c++ - C++ DirectX 9 未解析的外部符号
- c# - 我如何知道协程是否仍在“等待”?
- ios - React Native 删除 iOS 的蓝牙权限警报
- kotlin - 如何从 Map 中获取字符串数组
在科特林? - python - 在数组上实现特征工程功能时出现 NumPy 错误
- django - 如何在 Django 和 DRF 中接收实时纬度和经度