Seed Database From JSON File in Laravel
We’re going to have a look, in just a few steps, at how to seed the database with data that come from a JSON file within our application.
In this example, we’ll use the
movies.json file to seed the
movies table with the top 100 movies ranked by IMDB.
Click here to inspect the JSON file we’re gonna be using.
Maybe you prefer the video version of this tutorial?
Let’s get started!
Create the JSON file
I already have the JSON file prepared right here, but feel free to use your own file and adapt the code to your needs.
I put the JSON file in the
It may not be the best place to store it, but for the purpose of this example, it will do just fine.
Create the corresponding Model
We need a
movies table so let’s go ahead and create an Eloquent Model Class.
Open up the terminal and write:
php artisan make:model Movie
Movie Model and define the name of the table and the fields that we want to get filled.
Create the migration
Now that we have the Model set up, let’s go ahead and create a migration for our table.
In the terminal, write:
php artisan make:migration create_movies_table
Open the migration file and let’s add the
title and the
id_imdb columns so that it matches the structure of the JSON data from our file.
Now let’s run the migration by saying:
php artisan migrate
Create the Seeder Class
Now comes the fun part.
We have to create a
Seeder Class that reads the JSON file, extracts the data, and then inserts or updates it into the database.
Inside the terminal, let’s say:
php artisan make:seeder MovieTableSeeder
We’re going to use the
Storage facade to read the file from the storage.
We decode the data into associative arrays.
Then we iterate over each movie and insert it into the database.
Call the Seeder
Now that we have the core logic ready to go, we must invoke the
MovieTableSeeder from the
DatabaseSeeder Class which comes out of the box with Laravel.
Everything should be alright at this point and let’s run the seeder by saying:
php artisan db:seed
Check the database to see if the table has been populated with the data from the JSON file.
I hope you now have a clearer view of how you can seed the database with data from a JSON file.
Let me know what you think about this article through comments below, or on Twitter at @pelu_carol.
If you find this article helpful, please share it with others and subscribe to the blog to support me, and receive a bi-monthly-ish e-mail notification on my latest articles.