【问题标题】:Laravel 4.2 - Adding time to timestampLaravel 4.2 - 将时间添加到时间戳
【发布时间】:2015-03-09 12:54:27
【问题描述】:

在 Laravel 4.2 中,当在数据库中创建记录时,使用 eloquent,我们可以创建 created_at 和 updated_at 时间戳。

我想在我正在使用的名为expires 的表中添加第三列,并且我想将该列的值设置为created_at + 72 hours

有没有“Laravel”的方式来做到这一点?访问 created_at 值?或者我应该以不同的方式处理这个问题?

【问题讨论】:

    标签: php laravel-4


    【解决方案1】:

    Laravel 的 created_at 是 Carbon 的一个实例。使用访问器,我们可以像这样填充$model->expires

    public function getExpiresAttribute() {
      $expires = clone $this->created_at;
      $expires->addHours(72);
      return $expires;
    }
    

    如果您希望能够针对该值查询(而不仅仅是计算以供显示),则需要将其存储在数据库中。要让它自动填充,你可以告诉 Laravel 它是一个日期列并使用观察者:

    public function getDates(){
      return ['created_at', 'updated_at', 'expires'];
    }
    
    public static function boot() {
      parent::boot();
    
      self::creating(function($model) {
        $model->expires = clone $model->created_at;
        $model->expires->addHours(72);
      }
    }
    

    【讨论】:

    • 谢谢。我不知道我可以这么容易地增加时间。这帮助很大:)
    • @GRowing Laravel 使用github.com/briannesbitt/Carbon,这太棒了
    • 我花了一天时间阅读文档。绝对棒极了!并且及时(相对于我的项目),所以我不会去做 Carbon 已经做过的各种不必要的工作。
    猜你喜欢
    • 2023-03-31
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 2010-10-26
    • 2014-03-18
    • 2021-12-03
    相关资源
    最近更新 更多