Let’s imagine a scenario where you have an old database and re-writing codebase to Laravel. Database structure may not follow Laravel standards – created_at and updated_at fields are named differently. How can you “tell it to Laravel”?
For example, if your fields are called create_time and update_time, here’s what you do in migration:
Schema::create('movies', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->timestamp('create_time')->nullable(); $table->timestamp('update_time')->nullable(); });
And then, apparently, it’s pretty simple – you can override the names of these fields in your model.
class Movie extends Model { const CREATED_AT = 'create_time'; const UPDATED_AT = 'update_time'; }
And here you don’t need any more mutators or attributes – these two fields will work exactly with the same auto-fill and auto-update logic as Laravel’s native ones.