Eloquent: incrementing columns without update() function

Tutorial last revisioned on August 18, 2022 with Laravel 9
Eloquent mechanism isn't limited to just create/update/delete functions - that's why it's awesome. One of those helpers come to rescue when you need to increment a column, basically run update X set Y=Y+1 where id = Z - apparently, there's no need to run update() function for that. A straightforward way of doing this is get the row, make the calculation and update the row, like this:
$customer = Customer::find($customer_id);
$loyalty_points = $customer->loyalty_points + 1;
$customer->update(['loyalty_points' => $loyalty_points]);
What if I told you it could be done in one line? Let's meet a function called increment():
Customer::find($customer_id)->increment('loyalty_points');
That's it - it will actually run update column + 1 under the hood. And not only that, you can specify a second parameter to this function: the amount of incrementing. The default is 1, but it can be any other number:
Customer::find($customer_id)->increment('loyalty_points', 50);
In addition, of course, you also have a decrement() function:
Customer::find($customer_id)->decrement('loyalty_points', 50);
Again, isn't Eloquent awesome?

Like our articles?

Become a Premium Member for $129/year or $29/month
What else you will get:
  • 59 courses (1056 lessons, total 42 h 44 min)
  • 78 long-form tutorials (one new every week)
  • access to project repositories
  • access to private Discord

Recent Premium Tutorials