Bird
Raised Fist0
Laravelframework~20 mins

Factory definitions in Laravel - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Factory Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What does this Laravel factory definition produce?
Consider this Laravel factory definition for a User model. What will be the value of the email_verified_at attribute when a user is created using this factory?
Laravel
<?php
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class UserFactory extends Factory
{
    protected $model = User::class;

    public function definition()
    {
        return [
            'name' => $this->faker->name(),
            'email' => $this->faker->unique()->safeEmail(),
            'email_verified_at' => now(),
            'password' => bcrypt('password'),
            'remember_token' => Str::random(10),
        ];
    }
}

// Usage:
// $user = User::factory()->create();
AThe current date and time when the factory is executed
BNull, because the email_verified_at field is not set in the factory
CA random date generated by Faker
DAn empty string
Attempts:
2 left
💡 Hint
Look at the value assigned to 'email_verified_at' in the factory's definition method.
📝 Syntax
intermediate
1:30remaining
Which factory definition syntax is correct for setting a default attribute?
You want to define a Laravel factory for a Post model with a default 'status' attribute set to 'draft'. Which of the following factory definitions is syntactically correct?
Areturn ['status' => draft];
Breturn ['status' => 'draft']
Creturn ['status' => "draft];
Dreturn ['status' => 'draft'];
Attempts:
2 left
💡 Hint
Check for proper string quoting and syntax completeness.
❓ state_output
advanced
2:00remaining
What is the output of this factory state modification?
Given this Laravel factory state method, what will be the value of the 'is_admin' attribute when creating a user with User::factory()->admin()->create();?
Laravel
<?php
class UserFactory extends Factory
{
    public function definition()
    {
        return [
            'name' => $this->faker->name(),
            'is_admin' => false,
        ];
    }

    public function admin()
    {
        return $this->state(fn (array $attributes) => [
            'is_admin' => true,
        ]);
    }
}

// Usage:
// $user = User::factory()->admin()->create();
AThe code will throw an error because 'admin' is not a valid method
BThe 'is_admin' attribute will be true
CThe 'is_admin' attribute will be null
DThe 'is_admin' attribute will be false
Attempts:
2 left
💡 Hint
Look at how the state method modifies attributes.
🔧 Debug
advanced
2:00remaining
Why does this factory definition cause a syntax error?
Examine this factory definition snippet. Why does it cause a syntax error?
Laravel
return [
    'title' => $this->faker->sentence(),
    'content' => $this->faker->paragraph(),
    'published_at' => $this->faker->boolean() ? now() : null,
];
AThe array keys must be quoted strings
BThe faker methods are called incorrectly
CThe inline if-else syntax is invalid in array values
DThe now() function cannot be used inside factory definitions
Attempts:
2 left
💡 Hint
Check the syntax of the conditional expression inside the array.
🧠 Conceptual
expert
2:30remaining
How does Laravel factory's afterCreating callback affect model state?
In Laravel factories, what is the effect of using the afterCreating callback inside a factory definition?
AIt runs a callback after the model is saved to the database, allowing modifications or related model creation
BIt modifies the model attributes before the model is saved to the database
CIt delays the creation of the model until explicitly called
DIt validates the model attributes before saving
Attempts:
2 left
💡 Hint
Think about when the callback runs in relation to the database save operation.

Practice

(1/5)
1. What is the main purpose of a factory definition in Laravel?
easy
A. To manage user authentication
B. To handle database migrations
C. To create routes for the application
D. To define how to create fake data for a model

Solution

  1. Step 1: Understand factory role

    Factories are used to generate fake data for models to help testing and development.
  2. Step 2: Identify correct purpose

    Among the options, only defining fake data for models matches the factory's role.
  3. Final Answer:

    To define how to create fake data for a model -> Option D
  4. Quick Check:

    Factory purpose = fake data definition [OK]
Hint: Factories create fake model data for testing [OK]
Common Mistakes:
  • Confusing factories with migrations
  • Thinking factories manage routes
  • Assuming factories handle authentication
2. Which method must be defined inside a Laravel factory class to specify fake data fields?
easy
A. definition()
B. make()
C. create()
D. generate()

Solution

  1. Step 1: Recall factory method names

    Laravel factories require a method named definition to return fake data arrays.
  2. Step 2: Match method to purpose

    Only definition() matches the method that defines fake fields.
  3. Final Answer:

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

    Fake data method = definition() [OK]
Hint: Use definition() to specify fake data fields [OK]
Common Mistakes:
  • Using create() or make() which are factory usage methods
  • Assuming generate() is a Laravel factory method
3. Given this factory definition snippet, what will User::factory()->make() produce?
public function definition()
{
    return [
        'name' => fake()->name(),
        'email' => fake()->unique()->safeEmail(),
        'age' => 25
    ];
}
medium
A. A syntax error because of missing return type
B. A User model instance with random name, unique email, and age 25
C. A User model instance with empty fields
D. An array with keys 'name', 'email', and 'age' but no model instance

Solution

  1. Step 1: Understand factory make() behavior

    The make() method creates a model instance without saving it to the database, filling fields from definition().
  2. Step 2: Analyze definition output

    The definition returns an array with a random name, unique email, and fixed age 25, so the model instance will have these values.
  3. Final Answer:

    A User model instance with random name, unique email, and age 25 -> Option B
  4. Quick Check:

    make() = model instance with defined fake data [OK]
Hint: make() returns model instance with fake data, not array [OK]
Common Mistakes:
  • Thinking make() returns an array
  • Confusing make() with create() which saves to DB
  • Expecting syntax errors without cause
4. What is wrong with this factory definition?
public function definition()
{
    return [
        'title' => fake()->sentence,
        'content' => fake()->paragraph(),
    ];
}
medium
A. Using fake()->sentence without parentheses causes an error
B. Missing semicolon after return statement
C. The array keys should be integers, not strings
D. The method should be named create() instead of definition()

Solution

  1. Step 1: Check method calls on fake()

    In Laravel factories, fake() returns a Faker instance; methods like sentence() require parentheses to call.
  2. Step 2: Identify error in code

    Using fake()->sentence without parentheses accesses a property, which does not exist, causing an error.
  3. Final Answer:

    Using fake()->sentence without parentheses causes an error -> Option A
  4. Quick Check:

    Method calls need () to avoid errors [OK]
Hint: Always use () when calling faker methods [OK]
Common Mistakes:
  • Omitting parentheses on faker method calls
  • Thinking array keys must be integers
  • Renaming definition() method incorrectly
5. You want to create a factory for a Product model where the price is a random number between 10 and 100, but only for products that are 'active'. How should you modify the factory definition to include this condition?
hard
A. Use a conditional inside definition() to set price only if 'active' is true
B. Set price randomly and filter active products later in queries
C. Add a state method named active() that sets price and active flag
D. Define price as a fixed value and ignore active status

Solution

  1. Step 1: Understand factory states for conditions

    Laravel factories use states to define variations like 'active' products with specific attributes.
  2. Step 2: Use a state method to set price and active flag

    Defining an active() state method allows setting price randomly and marking product as active only when this state is applied.
  3. Final Answer:

    Add a state method named active() that sets price and active flag -> Option C
  4. Quick Check:

    Use factory states for conditional attributes [OK]
Hint: Use factory states to handle conditional attributes [OK]
Common Mistakes:
  • Trying to put conditions inside definition() directly
  • Setting fixed price ignoring active status
  • Filtering active products only in queries, not factory
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