USING CUSTOM TIMESTAMP COLUMNS

Dec 19, 2025 Copy Link

If you need to customize the column names for `created_at` and `updated_at`, you can do so at the database level.

 

/**
 * Run the migrations.
 */
public function up(): void
{
    Schema::create('items', function (Blueprint $table) {
        $table->id();
        $table->string('title');
-       $table->timestamps();
        // Custom timestamp columns
+       $table->timestamp('created_on')->nullable();
+       $table->timestamp('updated_on')->nullable();
    });
}

 

After creating the table, attempting to create a new `Item` model will result in an exception because Eloquent expects the default `created_at` and `updated_at` columns.

 

You can resolve this in one of the following ways.

 

Option 1: Disable timestamps entirely

 

use Illuminate\Database\Eloquent\Model;

class Item extends Model
{
    /**
     * Indicates if the model should be timestamped.
     *
     * @var bool
     */
    public $timestamps = false;
}

 

Option 2: Define custom timestamp column names (recommended)

 

use Illuminate\Database\Eloquent\Model;

class Item extends Model
{
    /**
     * The name of the "created at" column.
     *
     * @var string|null
     */
    public const CREATED_AT = 'created_on';

    /**
     * The name of the "updated at" column.
     *
     * @var string|null
     */
    public const UPDATED_AT = 'updated_on';
}

 

Learn more in the documentation

Share via

Mahmoud Ramadan

Mahmoud Ramadan

Mahmoud is the creator of Digging Code and a contributor to Laravel since 2020.