Laravel Importing SQL dumps with seeds

David Carr

Laravel Framework Tutorials PHP & MySQL

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));

 

Copyright © 2006 - 2024 DC Blog - All rights reserved.