nielsv
nielsv

Reputation: 6830

Laravel 5 Seeder - multiple rows in DB

I was wondering if it's possible to insert multiple rows like this (or something like this):

<?php

use Illuminate\Database\Seeder;

class SettingTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('settings')->insert(
            [
                'key' => 'username',
                'value' => 'testusername'
            ],
            [
                'key' => 'password',
                'value' => 'plain'
            ]
        );
    }
}

I have a table settings in my database with columns key & value.

The problem with the code above is that he only inserts the first one ... .

Upvotes: 7

Views: 18460

Answers (3)

Abra&#227;o Pessoa
Abra&#227;o Pessoa

Reputation: 1

Just repeate the DB::table code as much as you want inside the run method!:

DB::table('settings')->insert(
            [
                'key' => 'username',
                'value' => 'testusername1'
            ]
        );

 DB::table('settings')->insert(
            [
                'key' => 'username',
                'value' => 'testusername2'
            ]
        );

 DB::table('settings')->insert(
            [
                'key' => 'username',
                'value' => 'testusername3'
            ]
        );

Upvotes: -1

Imtiaz Pabel
Imtiaz Pabel

Reputation: 5445

you can use insert method from eloquent for bulk save like

Settings::insert([[
            'key' => 'username',
            'value' => 'testusername'
        ],
        [
            'key' => 'password',
            'value' => 'plain'
        ]]);

Upvotes: 1

Chris Magnussen
Chris Magnussen

Reputation: 1527

You need to wrap your arrays in another array, so it would look like this:

DB::table('settings')->insert([
    [
        'key' => 'username',
        'value' => 'testusername'
    ],
    [
        'key' => 'password',
        'value' => 'plain'
    ]
]);

Notice the wrapping array.

What you are doing now is actually sending two separate arrays to the insert() method.

Upvotes: 35

Related Questions