Laravel Importing SQL dumps with seeds

David Carr

Laravel Framework PHP & MySQL Tutorials

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

 

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

David Carr - Laravel Developer

Hi, I’m David Carr

A Senior Developer at Vivedia
I love to use the TALL stack (Tailwind CSS, Alpine.js, Laravel, and Laravel Livewire)

I enjoy writing tutorials and working on Open Source packages.

I also write books. I'm writing a new book Laravel Testing Cookbook, This book focuses on testing coving both PestPHP and PHPUnit.

Sponsor me on GitHub

Subscribe to my newsletter

Subscribe and get my books and product announcements.

Laravel Testing Cookbook

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

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

Subscribe to my newsletter

Subscribe and get my books and product announcements.

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