laravel中的时间戳不会更新

Ari*_*Ari 1 php mysql timestamp date laravel

我的表Blis中有一栏称为"截止日期".类型是时间戳.我正在使用MySQL db.

当我以"yy-mm-dd h:i:s"格式保存日期时,它保存得很好,但每当我尝试将其更新到其他日期时,它就不会保存.

假设我有2019-02-17 00:00:00在一行,并希望更新到2019-05-05 09:30:00,即使行的其余部分确实更新,也不会进行更改.

移民:

public function up()
{
    Schema::table('blis', function (Blueprint $table) {
        $table->timestamp('deadline')->default(null)->nullable();
    });
}
Run Code Online (Sandbox Code Playgroud)

控制器:

public function update(Bli $bli)
    {

        $attributes = request()->validate(
            [
            'title' => ['required', 'min:3'],
            'description' => ['nullable'],
            'status_id' => ['required'],
            'deadline' => ['date_format:Y-m-d H:i:s']
            ]
        );

        $bli->update(request(['title', 'description', 'status_id', 'deadline']));



        return redirect("/bli/$bli->id");
    }
Run Code Online (Sandbox Code Playgroud)

HTML:

<div class="form-group ">
      <label for="deadline">Deadline:</label>
      <input class="form-control" type="text" id="datepicker" name="deadline" placeholder="Date" value="{{$bli->deadline}}">
</div>
Run Code Online (Sandbox Code Playgroud)

我正在使用jquery UI的datepicker作为输入字段:

$( "#datepicker" ).datepicker({
    dateFormat: "yy-mm-dd 00:00:00"
});
Run Code Online (Sandbox Code Playgroud)

即使我删除验证,"截止日期"的值仍然不会更新.

时间戳是否是在这种情况下使用的正确类型?如果是这样,为什么在行的其余部分不会更新?如果没有,在这种情况下使用哪个正确的日期类型?

Geo*_*son 6

我猜你正在使用Laravel.在这种情况下,请确保deadlinefillable数组中.

protected $fillable = [
    ...
    'deadline',
    ...
]
Run Code Online (Sandbox Code Playgroud)

否则Laravel将不会存储该值.