🔍

laravel 中保存 model 时阻止更新时间戳

有时候在更新某些字段的时候,我们不希望去更新时间戳。例如,当我更新了一篇文章的 is_top 字段时,我不希望更新它的 updated_at 字段。

解决办法

1
2
3
$post->timestamps = false;
$post->is_top = true;
$post->save();

为了方便,可以弄一个 trait 。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php

namespace App\Traits;

trait ModelExtend
{
    public function withoutTimestamps()
    {
        $this->timestamps = false;
        return $this;
    }
}

使用的时候,在模型中引用上述的 trait ,然后这样写。

1
2
$post->is_top = true;
$post->withoutTimestamps()->save();