Black Friday sale is now on! 50% off Laravel: The Modular Way. Learn more

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

     

    Laravel Modules Book by David Carr

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

    Subscribe to my newsletter

    Subscribe and get my books and product announcements.

    © 2009 - 2022 DC Blog. All code MIT license. All rights reserved.