How to update a record without updating timestamp in Laravel

While working on an application, you might encounter a situation, where you don't need to update the default timestamp field updated_at or any custom column defined by you during development. Such as user profile visit count or page visit count where model properties aren't updated.

So Laravel also allows us to handle it easily just by assigning false, stops auto-updating of timestamp fields. Assigning true will start updating back.

With Laravel it is as easy as assigning a value(true/false), that performs both actions based on a specified value. So that you can just start working with it. This is worth using.

Automatically updating the current timestamp into updated_at or any custom timestamps column during Eloquent record update, is also one of the amazing features by Laravel.

Disable timestamp auto-update in Laravel

In this article, we will see How to update records without saving or updating timestamp fields either updated_at or any other custom field. Laravel provides us functionality to handle timestamp updates while saving the model. Assigning false to the timestamps property of the model during model save prevents auto-update of timestamp fields.

Just follow our example as given below, to disable timestamps, only once:

How to prevent timestamps auto-update on saving in Laravel

To stop auto-update for Laravel timestamps fields, assign false to timestamps model property as shown below. To allow auto-update timestamps fields to assign true, so that whenever model fields are modified; Laravel will update timestamp fields.

$model->timestamps = false;

Example without firstOrCreate()

$user = User::find(1);

// Prevents timestamps auto-update
$user->timestamps = false;

$user->increment('profile_views_count');

$user->save();

The line $user->timestamps = false; prevents timestamp from auto-updating.

The increment() function in $user->increment('profile_views_count'); line accepts 2 arguments:

  1. The first argument is the field name that needs to be increment.
  2. And the second argument is an amount of incrementing numeric value. The default value is 1 but it can be any number.