---
description: >-
  https://www.itsolutionstuff.com/post/how-to-create-seeder-with-json-data-in-laravelexample.html
---

# How to Create Seeder with JSON data in Laravel? (ok)

C:\xampp\htdocs\reset\database\migrations\2022\_05\_20\_190911\_create\_countries\_table.php

```
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateCountriesTable extends Migration {
  /**
   * Run the migrations.
   *
   * @return void
   */
  public function up() {
    Schema::create('countries', function (Blueprint $table) {
      $table->id();
      $table->string('name');
      $table->string('code');
      $table->timestamps();
    });
  }
  /**
   * Reverse the migrations.
   *
   * @return void
   */
  public function down() {
    Schema::dropIfExists('countries');
  }
}
```

C:\xampp\htdocs\reset\app\Models\Country.php

```
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Country extends Model {
  use HasFactory;
  protected $table      = 'countries';
  protected $primaryKey = 'id';
  protected $fillable   = [
    'name', 'code',
  ];
}
```

C:\xampp\htdocs\reset\database\seeders\CountrySeeder.php

```
<?php
namespace Database\Seeders;
use App\Models\Country;
use File;
use Illuminate\Database\Seeder;
class CountrySeeder extends Seeder {
  /**
   * Run the database seeds.
   *
   * @return void
   */
  public function run() {
    Country::truncate();
    $json      = File::get("database/data/country.json");
    $countries = json_decode($json);
    foreach ($countries as $key => $value) {
      Country::create([
        "name" => $value->name,
        "code" => $value->code,
      ]);
    }
  }
}
```

C:\xampp\htdocs\reset\database\data\country.json

```
[
{
    "name": "A 1",
    "code": "B 1"
},
{
    "name": "A 12",
    "code": "B 12"
},
{
    "name": "A 31",
    "code": "B 13"
},
{
    "name": "A 14",
    "code": "B 14"
},
{
    "name": "A 15",
    "code": "B 15"
},
{
    "name": "A 16",
    "code": "B 16"
},
{
    "name": "A 17",
    "code": "B 17"
},
{
    "name": "A 18",
    "code": "B 18"
},
{
    "name": "A 19",
    "code": "B 19"
}]
```

## How to Create Seeder with JSON data in Laravel?

By Hardik Savani August 7, 2021 Category : Laravel![](https://a.vdo.ai/core/assets/img/cross.svg)PlayUnmuteLoaded: 1.15%Fullscreen[![VDO.AI](https://a.vdo.ai/core/assets/img/logo.svg)](https://vdo.ai/?utm_medium=video\&utm_term=itsolutionstuff.com\&utm_source=vdoai_logo)Hi,

In this short tutorial we will cover an laravel seed from json file example. i explained simply about how to create seeder with json file in laravel. if you have question about laravel seeder from json file then i will give simple example with solution. we will help you to give example of laravel seeder json.

Sometime we need to read long json file and store that data in you database and we need to do maybe in every setup then we always choose seeder for that. so here i will give you very simple example of how to create seeder with json data in laravel and you can use this example with laravel 6, laravel 7, laravel 8 and laravel 9 version.

**Step 1: Create Json File**

in first step we will create country json file with name and code. so you can create data folder inside database folder and put that file as bellow preview:

database/data/country.json

![](https://www.itsolutionstuff.com/upload/laravel-seeder-json.png)

**Step 2: Create Seeder and Country Model**

here, we will create migration for countries table. so let's create migration as bellow:

```
php artisan make:migration create_countries_table
```

database/migrations/your\_migtion\_file.php

```
<?php  use Illuminate\Database\Migrations\Migration;use Illuminate\Database\Schema\Blueprint;use Illuminate\Support\Facades\Schema;  class CreateCountriesTable extends Migration{    /**     * Run the migrations.     *     * @return void     */    public function up()    {        Schema::create('countries', function (Blueprint $table) {            $table->id();            $table->string('name');            $table->string('code');            $table->timestamps();        });    }      /**     * Reverse the migrations.     *     * @return void     */    public function down()    {        Schema::dropIfExists('countries');    }}
```

now let's run migration:

```
php artisan migrate
```

next, add soft delete facade in user model as like bellow:

app/Models/County.php

```
<?php  namespace App\Models;  use Illuminate\Database\Eloquent\Factories\HasFactory;use Illuminate\Database\Eloquent\Model;  class Country extends Model{    use HasFactory;      protected $fillable = [        'name', 'code'    ];}
```

Read Also: [How to create database seeder in Laravel 5.7?](https://www.itsolutionstuff.com/post/how-to-create-database-seeder-in-laravel-57example.html)

**Step 3: Create Seeder**

In this step, we need to create add seeder for country lists.

Create Seeder with bellow command

```
php artisan make:seeder CountrySeeder
```

database/seeders/CountrySeeder.php

```
<?php  namespace Database\Seeders;  use Illuminate\Database\Seeder;use App\Models\Country;use File;  class CountrySeeder extends Seeder{    /**     * Run the database seeds.     *     * @return void     */    public function run()    {        Country::truncate();          $json = File::get("database/data/country.json");        $countries = json_decode($json);          foreach ($countries as $key => $value) {            Country::create([                "name" => $value->name,                "code" => $value->code            ]);        }    }}
```

now let's run seeder:

Read Also: [How to Run Migration and Seeder on Laravel Vapor?](https://www.itsolutionstuff.com/post/how-to-run-migration-and-seeder-on-laravel-vaporexample.html)

```
php artisan db:seed --class=CountrySeeder
```

now you can see bellow added country lists on your table:

![](https://www.itsolutionstuff.com/upload/laravel-seeder-json-1.png)

I hope it can help you.
