【问题标题】:timestamp in laravel won't updatelaravel 中的时间戳不会更新
【发布时间】:2019-02-08 14:31:44
【问题描述】:

我的表 Blis 中有一个名为“deadline”的列。类型是时间戳。我正在使用 MySQL 数据库。

当我以“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();
    });
}

控制器:

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");
    }

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>

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

$( "#datepicker" ).datepicker({
    dateFormat: "yy-mm-dd 00:00:00"
});

即使我删除了验证,“deadline”的值仍然不会更新。

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

【问题讨论】:

  • date_format 不会修改请求数据的格式,它只是检查它是否是相同的格式 - 只是检查您是否知道这一点
  • 是的,已经知道了。我想在保存到数据库之前以这种格式验证日期。 @CodeBoyCode
  • 您绝对确定表单上的字段名为deadline
  • 是的,在问题中包含了 html。 @RiggsFolly

标签: php mysql laravel date timestamp


【解决方案1】:

我想你正在使用 Laravel。在这种情况下,请确保 deadlinefillable 数组内。

protected $fillable = [
    ...
    'deadline',
    ...
]

否则 Laravel 将不会存储该值。

【讨论】:

    猜你喜欢
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 2020-12-02
    • 1970-01-01
    • 2018-12-27
    相关资源
    最近更新 更多