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

 

Laravel Modules Your Logo Your Logo Your Logo

Become a sponsor

Help support the blog so that I can continue creating new content!

Sponsor

My Latest Book

Modular Laravel Book - Laravel: The Modular way

Learn how to build modular applications with Laravel Find out more

Subscribe to my newsletter

Subscribe and get my books and product announcements.

Fathom Analytics $10 discount on your first invoice using this link

© 2006 - 2024 DC Blog. All code MIT license. All rights reserved.