Bird
Raised Fist0
Laravelframework~10 mins

CRUD with Eloquent in Laravel - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - CRUD with Eloquent
Create Model Instance
↓
Set Attributes
↓
Save to DB
↓
Read Data
↓
Update Attributes
↓
Save Changes
↓
Delete Record
↓
End
This flow shows how to create, read, update, and delete records using Eloquent models step-by-step.
Execution Sample
Laravel
use App\Models\Post;

// Create
$post = new Post();
$post->title = 'Hello';
$post->save();
This code creates a new Post record with the title 'Hello' and saves it to the database.
Execution Table
StepActionModel StateDatabase StateOutput/Result
1Create new Post instancePost object with no attributes setNo new recordNo output
2Set title attribute to 'Hello'Post object with title='Hello'No new recordNo output
3Call save() to insert recordPost object savedNew record with title='Hello' addedRecord ID assigned
4Read record by IDPost object with title='Hello'Record existsPost data retrieved
5Update title to 'Hello World'Post object with title='Hello World'Record still originalNo output
6Call save() to update recordPost object saved with new titleRecord updated with title='Hello World'No output
7Call delete() on PostPost object marked deletedRecord removed from DBNo output
8Try to read deleted recordNo Post object foundNo recordNull returned
9End of CRUD operations---
💡 CRUD cycle ends after delete and failed read of deleted record
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 5After Step 6After Step 7After Step 8
$postnullPost(title='Hello')Post(saved with ID)Post(title='Hello World')Post(saved updated)Post(deleted)null
Key Moments - 3 Insights
Why does the Post object exist after save() but before delete()?
Because save() writes the data to the database but the object in memory still exists until delete() is called (see steps 3 and 7 in execution_table).
What happens if you try to read a record after deleting it?
The read returns null because the record no longer exists in the database (see step 8 in execution_table).
Does changing attributes update the database immediately?
No, changes to attributes only affect the model in memory until save() is called to update the database (see steps 5 and 6).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the database state after step 3?
ANo new record
BRecord updated with title='Hello World'
CNew record with title='Hello' added
DRecord removed from DB
💡 Hint
Check the 'Database State' column for step 3 in the execution_table.
At which step does the Post object get deleted from the database?
AStep 5
BStep 7
CStep 8
DStep 3
💡 Hint
Look for the 'delete()' action in the 'Action' column of execution_table.
If you update the title but forget to call save(), what happens to the database?
ADatabase remains unchanged
BRecord is deleted
CDatabase updates automatically
DNew record is created
💡 Hint
Refer to steps 5 and 6 in execution_table to see when database updates occur.
Concept Snapshot
CRUD with Eloquent:
- Create: new Model(); set attributes; save()
- Read: Model::find(id) or queries
- Update: change attributes; save()
- Delete: call delete() on model
Remember: save() writes changes to DB, delete() removes record.
Full Transcript
This visual execution trace shows how to perform CRUD operations using Laravel's Eloquent ORM. First, a new model instance is created and attributes are set in memory. Calling save() inserts the record into the database. Reading retrieves the record by ID. Updating changes attributes in memory and requires save() to update the database. Deleting removes the record from the database. Trying to read a deleted record returns null. The variable tracker shows the $post model's state through each step. Key moments clarify that save() is needed to persist changes and that the model object exists separately from the database record. The quiz tests understanding of when database changes happen and the effect of delete(). This step-by-step flow helps beginners see how Eloquent manages data in code and database.

Practice

(1/5)
1. Which Eloquent method is used to add a new record to the database in Laravel?
easy
A. create()
B. find()
C. delete()
D. update()

Solution

  1. Step 1: Understand the purpose of create()

    The create() method in Eloquent is designed to add a new record to the database by passing an array of attributes.
  2. Step 2: Compare with other methods

    find() retrieves a record, delete() removes a record, and update() modifies an existing record. None of these add new records.
  3. Final Answer:

    create() -> Option A
  4. Quick Check:

    Add new record = create() [OK]
Hint: Use create() to add new data fast [OK]
Common Mistakes:
  • Confusing find() with create()
  • Using update() to add new records
  • Trying to delete() to add data
2. Which of the following is the correct syntax to find a record by its ID using Eloquent?
easy
A. $user = User->find($id);
B. $user = User::findById($id);
C. $user = User::find($id);
D. $user = User.find($id);

Solution

  1. Step 1: Recall Eloquent static method syntax

    Eloquent uses static methods on the model class, so User::find($id) is correct.
  2. Step 2: Identify incorrect syntax

    User->find($id) is invalid because User is a class, not an object. findById() does not exist. User.find() is not PHP syntax.
  3. Final Answer:

    $user = User::find($id); -> Option C
  4. Quick Check:

    Find by ID uses ::find() [OK]
Hint: Use double colon :: for static methods [OK]
Common Mistakes:
  • Using arrow -> on class name
  • Calling non-existent findById() method
  • Using dot . notation like JavaScript
3. What will be the output of this code snippet assuming a user with ID 5 exists?
$user = User::find(5);
if ($user) {
$user->name = 'Alice';
$user->save();
echo 'Updated';
} else {
echo 'Not found';
}
medium
A. Updated
B. Not found
C. Error: save() method missing
D. No output

Solution

  1. Step 1: find(5) execution

    Since a user with ID 5 exists, User::find(5) returns an Eloquent model instance, making $user truthy.
  2. Step 2: Update and save

    The if ($user) condition passes, so name is set to 'Alice', save() persists it to the database, and 'Updated' is echoed.
  3. Final Answer:

    Updated -> Option A
  4. Quick Check:

    Record found and saved = 'Updated' [OK]
Hint: If find() returns object, save() updates record [OK]
Common Mistakes:
  • Assuming save() is missing
  • Thinking find() throws error if no record
  • Expecting no output when record exists
4. Identify the error in this code that tries to delete a user by ID:
$user = User::find($id);
$user->delete($id);
medium
A. delete() method does not exist in Eloquent
B. find() should be replaced with findOrFail()
C. You must call save() after delete()
D. delete() should be called without arguments

Solution

  1. Step 1: Understand delete() method usage

    In Eloquent, delete() is called on the model instance without any arguments to remove that record.
  2. Step 2: Identify the incorrect argument

    The code incorrectly passes $id to delete(), which expects no parameters. This causes an error.
  3. Final Answer:

    delete() should be called without arguments -> Option D
  4. Quick Check:

    delete() takes no parameters [OK]
Hint: Call delete() directly on model instance without args [OK]
Common Mistakes:
  • Passing ID to delete() method
  • Thinking delete() needs save() after
  • Confusing delete() with static method
5. You want to update a user's email only if the user exists and the new email is not empty. Which code snippet correctly does this using Eloquent?
hard
A.
$user = User::find($id);
if ($newEmail) {
$user->email = $newEmail;
$user->save();
}
B.
$user = User::find($id);
if ($user && !empty($newEmail)) {
$user->email = $newEmail;
$user->save();
}
C.
$user = User::findOrFail($id);
$user->email = $newEmail;
$user->save();
D.
$user = User::where('id', $id)->update(['email' => $newEmail]);

Solution

  1. Step 1: Check user existence and email validity

    $user = User::find($id);
    if ($user && !empty($newEmail)) {
    $user->email = $newEmail;
    $user->save();
    }
    checks if $user exists and $newEmail is not empty before updating, preventing errors or empty updates.
  2. Step 2: Compare other options

    $user = User::find($id);
    if ($newEmail) {
    $user->email = $newEmail;
    $user->save();
    }
    skips user existence check, risking errors if user is null.
    $user = User::findOrFail($id);
    $user->email = $newEmail;
    $user->save();
    uses findOrFail() which throws exception if user missing, no email empty check.
    $user = User::where('id', $id)->update(['email' => $newEmail]);
    updates directly but does not check if $newEmail is empty.
  3. Final Answer:

    $user = User::find($id);
    if ($user && !empty($newEmail)) {
    $user->email = $newEmail;
    $user->save();
    }
    -> Option B
  4. Quick Check:

    Check user and email before save [OK]
Hint: Always check user exists and data valid before save [OK]
Common Mistakes:
  • Not checking if user exists before update
  • Skipping validation of new email
  • Using findOrFail without handling exceptions
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard