Подтвердить что ты не робот

Семя несколько рядов сразу laravel 5

В настоящее время я пытаюсь засеять таблицу моих пользователей. Если я попробую сделать это с двумя строками, это не сработает. Он отлично работает, если я просто использую только один массив вместо 2 массивов внутри массива $users, чтобы создать некоторые поддельные данные.

Что я делаю неправильно, каков правильный способ сделать это?

class UserTableSeeder extends Seeder {

    public function run()
    {
        DB::table('users')->delete();

        $users = [
            ['id' => 1, 'name' => 'Stephan de Vries', 'username' => 'stephan', 'email' => '[email protected]', 'password' => bcrypt('carrotz124')],
            ['id' => 2, 'name' => 'John doe', 'username' => 'johnny', 'email' => '[email protected]', 'password' => bcrypt('carrotz1243')],
        ];

        User::create($users);
    }

}

4b9b3361

Ответ 1

Если вам нужно использовать модель, вам нужен цикл:

foreach($users as $user){
    User::create($user);
}

В противном случае вы можете просто использовать DB::table() и insert:

DB::table('users')->insert($users);

На самом деле вы также можете вызвать insert() в модели (результирующий запрос одинаков)

User::insert($users);

Примечание, если вы выберете метод insert, вы потеряете специальные функции Eloquent, такие как временные метки и события модели.

Ответ 2

Это работает даже для Laravel 5.3

<?php

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */

    public function run()
    {
        // check if table users is empty
        if(DB::table('users')->get()->count() == 0){

            DB::table('users')->insert([

                [
                    'name' => 'Administrator',
                    'email' => '[email protected]',
                    'password' => bcrypt('password'),
                    'created_at' => date('Y-m-d H:i:s'),
                    'updated_at' => date('Y-m-d H:i:s'),
                ],
                [
                    'name' => 'Agency',
                    'email' => '[email protected]',
                    'password' => bcrypt('password'),
                    'created_at' => date('Y-m-d H:i:s'),
                    'updated_at' => date('Y-m-d H:i:s'),
                ],
                [
                    'name' => 'End',
                    'email' => '[email protected]',
                    'password' => bcrypt('password'),
                    'created_at' => date('Y-m-d H:i:s'),
                    'updated_at' => date('Y-m-d H:i:s'),
                ]

            ]);

        } else { echo "\e[31mTable is not empty, therefore NOT "; }

    }
}