【问题标题】:Custom Timestamps in LaravelLaravel 中的自定义时间戳
【发布时间】:2015-03-23 18:34:43
【问题描述】:

我想在我的表格的某些列中保留更改的时间记录。如何在数据库中获取和保存时间戳值?我正在尝试按照以下方式进行操作,但在 col_edited_at 列中总是得到 0000-00-00 00:00:00。

$case->col_edited_at = time();
$case->save();

【问题讨论】:

  • col_edited_at 的列类型是什么?
  • 是列名。我是通过雄辩的。列类型为时间戳。

标签: laravel timestamp laravel-5


【解决方案1】:

其他答案是正确的,但我有一个更优雅的解决方案的想法。所以你不必再考虑设置时间戳了。将此添加到您的模型中,如果您更改列,它将刷新 col_edited_at 字段:

public static function boot(){
    parent::boot();

    static::saving(function($model){
        if($model->isDirty('col')){
            $model->col_edited_at = Carbon::now();
        }
    });
}

因此,当模型被保存并且col 变脏(意味着它已更改)时,时间戳将设置为当前时间。

用法:

$model = MyModel::find(1);
$model->col = 'foo';
$model->save();

【讨论】:

    【解决方案2】:

    默认情况下,MySQL 时间戳字段需要格式 0000-00-00 00:00:00。如果您只想存储像 time() 返回的那样的 unix 样式“自纪元以来的秒数”时间戳,请使用整数字段,或者使用:

    $case->col_edited_at = date('Y-m-d H:i:s');
    $case->save();
    

    【讨论】:

    • 或者干脆Carbon::now()
    【解决方案3】:

    简单地使用

    date('Y-m-d H:i:s') 而不是time()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      • 1970-01-01
      • 2016-06-27
      相关资源
      最近更新 更多