Php laravel雄辩模型无法存储十进制值

Php laravel雄辩模型无法存储十进制值,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我使用的是Laravel5.7和PHP7.3,其中 我必须在数据库中存储十进制字段 表列说明如下所示 'commission_percentage', 'decimal(12,4)' 'commission_amount', 'decimal(12,4)' 我正试图使用eloquent模型在mysql中存储此列的十进制值 下面是这方面的示例代码 $per = 10.23; $commission = 2.1234; $createArr = [ 'c

我使用的是Laravel5.7和PHP7.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。我发现解决这个问题的方法是将变量键入“string”


它应该由迁移本身来处理。您能提供该文件的原始迁移代码吗?您能添加您使用的示例代码吗?您可能发送了带有
逗号作为小数的值seperation@N69S我已经添加了示例代码。我没有发送以“,”逗号作为小数点分隔的值。然后直接检查数据库中的字段格式类型。两个选项中的一个是错误的,input或DB。@sdebarun我们对此没有任何迁移。但问题在于Elount model或laravel数据库包没有按要求保存值。
$per = 10.23;
$commission = 2.1234;
$createArr = [    
                  'commission_percentage' => (string) $per,
                  'commission_amount' => (string) $commission
             ];
            
MyModel::create($createArr);