Eloquent:插入 0.00 而不是实际的浮点值

Eloquent: Inserts 0.00 instead of the actual float value

我的 table 中有一个名为 hoursWorked 的字段:

$table->float('HoursWorked',2,2);

在MySQL中:

+-------------------+-------------+------+-----+---------+-------+
| Field             | Type        | Null | Key | Default | Extra |
+-------------------+-------------+------+-----+---------+-------+
| HoursWorked       | double(2,2) | NO   |     | NULL    |       |

在我的模型中,我指定这个字段在 $casts 数组中是 double(2,2):

protected $casts = [
        'hoursWorked' => "double(2,2)"
];

并且该字段被标记为可填写
我正在传递具有以下格式的 JSON 对象:

...Some data
 "hoursWorked":"6.55",
...Some data

我稍后将其转换为数组,并将其传递给模型的 ::create 方法。但是在插入之后(没有任何错误发生),数据库中存储的数据为 0.00。我尝试删除数字周围的 " " 但它没有用。任何关于我如何进行的想法。

编辑: 这是运行查询的代码:

$m = \App\Models\Timesheet::class;
foreach($request->json()->get('timesheets') as $timesheet){
    $validator = Validator::make($timesheet, $m::$rules, ['required' => trans("errors.required_field")]);
    if ($validator->fails()) {
        break;
    }else{
         $m::create($timesheet);
    }
}

Eloquent 模型默认防止批量赋值。使用 create 方法时,eloquent 不会为受保护的属性赋值。

您可以使用 $guarded 属性

protected $guarded = [];

$fillable 属性 \App\Models\Timesheet 型号

protected $fillable = ['HoursWorked'];