【发布时间】:2021-04-07 08:57:36
【问题描述】:
我正在使用 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。
【问题讨论】:
-
它应该由迁移本身处理。您能提供该文件的原始迁移代码吗?
-
您可以添加您使用的示例代码吗?您可能发送了带有
,逗号作为十进制分隔符的值 -
@N69S 我已经添加了示例代码。而且我还没有用 `,` 逗号作为十进制分隔符发送值。
-
然后直接检查您的数据库中的字段格式类型。两者之一是错误的,输入或DB。
-
@sdebarun 我们没有任何迁移。但问题在于 eloquent 模型或 laravel 数据库包没有按要求保存值。
标签: php mysql laravel eloquent