📖 Scenario: You are building a Laravel application that tracks blog posts. Each post needs to record when it was created and last updated automatically.
🎯 Goal: Create a Laravel Eloquent model for Post that uses timestamps to automatically manage created_at and updated_at fields.
📋 What You'll Learn
Create a Post model class
Enable automatic timestamps management
Add a property to disable timestamps in the model
Manually set a timestamp value for created_at
💡 Why This Matters
🌍 Real World
Many web applications need to track when records are created and updated. Laravel's timestamps feature helps automate this common task.
💼 Career
Understanding timestamps management is essential for backend developers working with Laravel to build maintainable and reliable data models.
Progress0 / 4 steps
1
Create the Post model with timestamps enabled
Create a Laravel Eloquent model class called Post that extends Model and uses automatic timestamps management by default.
Laravel
Hint
Laravel Eloquent models have timestamps enabled by default, so you only need to create the class extending Model.
2
Add a property to disable timestamps
Inside the Post model class, add a public property $timestamps and set it to false to disable automatic timestamps.
Laravel
Hint
Set public $timestamps = false; inside the model class to turn off timestamps.
3
Manually set the created_at timestamp
In the Post model class, add a method called setCreatedAtManually that sets the created_at attribute to the current date and time using now().
Laravel
Hint
Define a public method that assigns now() to $this->created_at.
4
Re-enable timestamps and finalize the model
Remove or comment out the $timestamps property to re-enable automatic timestamps in the Post model class.
Laravel
Hint
Comment out or delete the public $timestamps = false; line to enable timestamps again.
Practice
(1/5)
1. What does the $timestamps property in a Laravel model control?
easy
A. Whether Laravel automatically manages created_at and updated_at columns
B. The timezone used for timestamps
C. The format of the timestamp columns
D. The database connection for timestamp fields
Solution
Step 1: Understand the role of $timestamps in Laravel models
The $timestamps property tells Laravel if it should automatically update created_at and updated_at fields when saving records.
Step 2: Identify what $timestamps = false does
Setting $timestamps = false disables this automatic management, so Laravel won't update those columns.
Final Answer:
Whether Laravel automatically manages created_at and updated_at columns -> Option A
Quick Check:
$timestamps controls auto timestamp updates [OK]
Hint: Remember: $timestamps toggles auto timestamp updates [OK]
Common Mistakes:
Confusing $timestamps with timezone settings
Thinking it changes timestamp format
Assuming it sets database connection
2. Which of the following is the correct way to add timestamp columns in a Laravel migration?
easy
A. $table->timestamp();
B. $table->timestamps();
C. $table->timeStamps();
D. $table->addTimestamps();
Solution
Step 1: Recall Laravel migration syntax for timestamps
Laravel provides a method timestamps() (all lowercase) to add created_at and updated_at columns automatically.
Step 2: Check each option's syntax
$table->timestamps(); uses the correct method name timestamps(). Options A, B, and D are either incomplete or incorrect method names.
Final Answer:
$table->timestamps(); -> Option B
Quick Check:
Migration timestamps method = timestamps() [OK]
Hint: Use exact method timestamps() in migrations [OK]
Common Mistakes:
Using singular timestamp() instead of plural
Capitalizing method name incorrectly
Assuming method is addTimestamps()
3. Given this model code, what will be the value of updated_at after saving a new record?
class Post extends Model {
public $timestamps = true;
}
$post = new Post();
$post->title = 'Hello';
$post->save();
medium
A. Null because it is a new record
B. An error occurs because updated_at is not set manually
C. Timestamp of the last update before save
D. Current timestamp when save() is called
Solution
Step 1: Understand $timestamps = true effect on saving
When $timestamps is true, Laravel automatically sets created_at and updated_at to the current time on save.
Step 2: Analyze saving a new record
On creating a new record, both timestamps get the current time. So updated_at is set to now, not null or error.
Final Answer:
Current timestamp when save() is called -> Option D
Quick Check:
New record save updates timestamps automatically [OK]
Hint: New saves set both timestamps to current time [OK]
Common Mistakes:
Thinking updated_at is null on new records
Assuming manual setting is required
Believing an error occurs without manual timestamps
4. You have this migration snippet:
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->timestamps;
});
What is the problem here?
medium
A. You must add nullable() to timestamps
B. The timestamps method does not exist
C. Missing parentheses after timestamps method call
D. The id() method should come after timestamps
Solution
Step 1: Check the migration method call syntax
In Laravel migrations, timestamps() is a method and must be called with parentheses.
Step 2: Identify the error in the code
The code uses $table->timestamps; without parentheses, so it does not execute the method, causing no timestamp columns to be created.
Final Answer:
Missing parentheses after timestamps method call -> Option C
Quick Check:
Method calls need parentheses: timestamps() [OK]
Hint: Always add () when calling migration methods [OK]
Common Mistakes:
Forgetting parentheses on method calls
Thinking timestamps is a property, not a method
Assuming order of columns matters here
5. You want to disable automatic timestamp management for a model but still keep the created_at and updated_at columns in the database. How should you do this?
hard
A. Set public $timestamps = false; in the model and keep $table->timestamps() in migration
B. Remove $table->timestamps() from migration and set $timestamps = false in model
C. Set public $timestamps = true; and manually update timestamps in code
D. Rename created_at and updated_at columns to disable timestamps
Solution
Step 1: Understand disabling timestamps in model
Setting public $timestamps = false; in the model disables Laravel's automatic update of timestamp columns.
Step 2: Keep timestamp columns in database
Keeping $table->timestamps() in migration ensures the columns exist in the database even if Laravel does not update them automatically.
Final Answer:
Set public $timestamps = false; in the model and keep $table->timestamps() in migration -> Option A
Quick Check:
Disable auto timestamps in model, keep columns in migration [OK]
Hint: Disable in model, keep columns in migration to keep timestamps [OK]
Common Mistakes:
Removing timestamps columns from migration when disabling
Assuming setting $timestamps to true disables timestamps
Renaming columns to disable timestamps
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.