How to Use Laravel Factories and Seeders in Laravel

Laravel factories and seeders

Hello fellow Laravel enthusiasts! Today, we’re diving into the world of Laravel factories and seeders, and we’ll be doing it in Laravel 10 style. So, whether you’re a seasoned developer or just starting with Laravel, let’s explore how to harness the power of factories and seeders to populate your database with fake data. It’s a game-changer for testing, development, and so much more.

 Understanding the Basics

Before we jump into the code, let’s break down the essentials.

 Model Code

First, let’s take a look at the model we’ll be working with. Here’s your `PostModel`:

class PostModel extends Model

    use HasFactory;

    protected $table = 'post';

    protected $fillable = [

        'title', 'description'


This model uses Laravel’s Eloquent ORM and includes the `HasFactory` trait, which is necessary for factory functionality.

 Laravel Factories

In Laravel, factories are a way to generate fake data for your Eloquent models. Think of them as blueprints for creating database records. We define how our data should look using these factories, making it a breeze to create consistent and realistic test data.

So, let’s take a look at a basic factory definition for a `PostModelFactory`:

class PostModelFactory extends Factory

   protected $model = PostModel::class;

    public function definition(): array

        return [

            'title' => $this->faker->sentence,

            'description' => $this->faker->paragraph,



Here, we define the structure of our `PostModelFactory` with fields like `title` and `description`. The magic happens thanks to the Faker library, which generates random but coherent data for us.

 Laravel Seeders

Now, onto seeders. Seeders are responsible for populating your database tables with initial data. This can be especially useful when setting up your application or when you need consistent test data.

Here’s a simple `PostSeeder`:

class PostSeeder extends Seeder

    public function run()


In this case, we’re using our `PostModelFactory` to create ten fake posts in our database. This is incredibly handy for developing and testing your application.

 Putting It All Together

So, how do you use these factories and seeders? It’s a four-step dance.

1. Define Your Model: First, define your Eloquent model. In our case, it’s the `PostModel`, where you specify the table name and fillable fields.

2. Define Your Factory: Then, create a factory class for your model, like our `PostModelFactory`. Define the structure of your data in the `definition` method.

3. Create Your Seeder: Craft a seeder class, such as our `PostSeeder`. In the `run` method, use your factory to create and insert records into the database.

4. Run the Seeder: Open your terminal, and with a simple

php artisan db:seed --class=PostSeeder

you’ll have your database populated with mock data.

 Benefits Galore

Now, why should you bother with factories and seeders? Here are some compelling reasons:

– Efficient Testing: You can easily create test data for your application, ensuring that your tests are consistent and repeatable.

– Database Initialization: Seeders help you set up your database with initial data, making it easier to get your app off the ground.

– Realistic Development: Factories generate data that closely mimics real-world scenarios, helping you build and refine features more effectively.

– Consistency: With factories and seeders, your data remains consistent, making it easier to debug and troubleshoot issues.

– Time Savings: Say goodbye to manually creating sample records. Let Laravel factories do the heavy lifting for you.

 Wrapping It Up

And there you have it! You’re now armed with the knowledge of how to use Laravel factories and seeders in Laravel 10, along with a solid understanding of defining your model. These tools are invaluable for developers, and once you’ve integrated them into your workflow, you’ll wonder how you ever lived without them.

So, go ahead, experiment, and explore. Create your factories, craft your seeders, and watch your Laravel applications flourish with realistic, consistent data. Happy coding, fellow artisans.

Database result after populating with mockup data

Leave a Reply

Your email address will not be published. Required fields are marked *