You may need to increment a field in a record of a table (a single attribute of a Laravel Model) and do not want update the updated_at timestamps.
Suppose the field is
popularity when you do this:
popularity, this will update the timestamps of that record too!
While you don’t want it.
$plan=Plan::find($planId);$plan->timestamps = false;
As an example see how laravel does the same when update the remember_me token at each logout without touching the timestamps.
In class EloquentUserProvider in Illuminate\Auth directory (this link) in the updateRememberToken() method Laravel first assigns the value (true or false) of timestamps to a temporary variable and after saving the remember_token in the $user model retrieves its original value.
Using a simple query builder which does not update timestamps on its own:
timestamps (updated_at) is not touched:
timestamps (updated_at) is touched:
->increment(‘popularity’,1,[‘updated_at’ => Carbon::now()]);
By default, Eloquent expects
updated_at columns to exist on your tables. If you do not wish to have these columns automatically managed by Eloquent, set the
$timestamps property on your model to
class Plan extends Model
* Indicates if the model should be timestamped.
* @var bool
public $timestamps = false;
In this case, whenever you want the timestamps to be updated, you need to manually assign them value like
$plan->updated_at = Carbon::now();
Thank you for reading! If you enjoyed this article:
Clap it ! Share it! Follow Me in Medium!
Panjeh — Medium
Read writing from Panjeh on Medium. Physicists PhD, Self-taught web developer #Learning, #laravelphp #Vuejs. Every day…
Also I’d like to hear your opinion on this article. If you have any doubt, question or suggestion please leave a comment below.
Have a very wonderful day!