雄辩的:插入0.00而不是实际的float值

时间:2018-07-09 12:19:27

标签: php mysql laravel eloquent lumen

我的表中有一个名为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);
    }
}

1 个答案:

答案 0 :(得分:1)

默认情况下,雄辩的模型可以防止大规模分配。在使用create方法时,雄辩的是不会将值分配给受保护的属性。

您可以使用$guarded属性

protected $guarded = [];

$fillable模型的\App\Models\Timesheet属性

protected $fillable = ['HoursWorked'];