Laravel Framework, PHP & MySQL, Tutorials

Laravel Importing SQL dumps with seeds

Seeding with Laravel is really useful for populating the database for instance a typical use case:

class TitlesDatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();

        Title::create(['title' => 'Mr']);
        Title::create(['title' => 'Miss']);
        Title::create(['title' => 'Ms']);
        Title::create(['title' => 'Mrs']);
        Title::create(['title' => 'Dr']);
    }
}

That's fine for simple inserts but when you need to import complex data say from an export the above won't do.

Instead DB::unprepared can be used to read and run raw sql

This example will import the sql provided.

//path to sql file
$sql = base_path('dump.sql');

//collect contents and pass to DB::unprepared
DB::unprepared(file_get_contents($sql));

 

David Carr

David Carr

For the past 12 years, I’ve been developing applications for the web using mostly PHP. I do this for a living and love what I do as every day there is something new and exciting to learn.

In my spare time, the web development community is a big part of my life. Whether managing online programming groups and blogs or attending a conference, I find keeping involved helps me stay up to date. This is also my chance to give back to the community that helped me get started, a place I am proud to be apart of.

Besides programming I love spending time with friends and family and can often be found together going out catching the latest movie, staying in playing games on the sofa or planning a trip to someplace I’ve never been before.