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'];
我的 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'];