Posts Learn Components Snippets Categories Tags Tools About

How to Update Laravel Model Without Touching Timestamps

Learn how to update Laravel Model without touching/changing the created_at and updated_at column

Created on Sep 29, 2021


In this short snippet, you will learn how to update a Model without touching/chancing the timestamps (created_at and updated_at) columns.

Update Model Without Updating Timestamps

To prevent the "timestamps" from updating, you can specify the timestamps value to "false" when saving the model. Imagine you have a post model and you want to update the "title" of the record. By default, it will update the "updated_at" column to the time when the record is saved.

$post = Post::first();
$post->title = "Post Title 1 Updated";
$post->timestamps = false;
If you do prefer to use the "update()" method then the code will be as follows.
$post = Post::first();
    'title' => "Post Title 1 Updated",
    'timestamps' => false

Update Multiple Model Without Updating Timestamps

To update multiple models without updating their timestamps then you can make use of the "where" statement.

    ->whereIn('id', [1, 2, 3])->update([
        'title' => 'Post 1, 2, 3 have the same title',
        'timestamps' => false
This goes the sample for when using the "DB" facade.

DB::table('posts')->... // your conditions here

Specify For The Whole Model

To prevent the Model timestamp from being updated, you can also specify the $timestamps property to false for any of your Eloquent model classes. This will disable the timestamps for the particular model so that you won't have to specify each update manually.

namespace App\Models;

class Post extends Model {
    public $timestamps = false; // put this code

If you like our tutorial, do make sure to support us by being our Patreon or buy us some coffee ☕️