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():
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:
In addition, of course, you also have a decrement() function:
Again, isn’t Eloquent awesome?