[Laravel]Eloquentで登録時刻だけを自動管理する方法

カテゴリ: Laravel

PHPのフレームワークLaravelに付属のEloquentでは、デフォルトでデータの登録・更新時刻をそれぞれ、created_at, updated_at列で管理してくれます。

通常はこれで問題ないのですが、履歴テーブルのようにデータの登録だけが行われ、更新されない事が事前に分かっている場合は、DBの容量を節約するため、created_at列だけ自動管理しupdated_at列を管理したくありません。

このような場合、以下化のようにtimestampsの管理をfalseにした上で、データ登録時のハンドラでcreated_atを登録するようにすると良いです。

class User extends Eloquent {
    // Eloquentによるcreated_at, updated_atの自動管理を行わない
    public $timestamps = false;

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

        // データ登録時に、created_atへ時刻をセットする
        static::creating(function ($model) {
            $model->created_at = $model->freshTimestamp();
        });
    }
}
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。