一次播种多行 laravel 5

2022-08-30 09:15:01

我当前正在尝试为我的用户表设定种子。如果我用2行这样尝试,它就会失败。如果我只使用单个数组而不是$users数组内的2个数组来创建一些假数据,则工作正常。

我做错了什么,正确的方法是什么?

class UserTableSeeder extends Seeder {

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

        $users = [
            ['id' => 1, 'name' => 'Stephan de Vries', 'username' => 'stephan', 'email' => 'stephan-v@gmail.com', 'password' => bcrypt('carrotz124')],
            ['id' => 2, 'name' => 'John doe', 'username' => 'johnny', 'email' => 'johndoe@gmail.com', 'password' => bcrypt('carrotz1243')],
        ];

        User::create($users);
    }

}


答案 1

如果你必须使用模型,你需要一个循环:

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

否则,您可以使用 和 :DB::table()insert

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

实际上,您也可以调用模型(结果查询是相同的)insert()

User::insert($users);

请注意,如果选择该方法,则会失去特殊的 Eloquent 功能,如时间戳和模型事件。insert


答案 2

这适用于 Laravel ^5

<?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')->count() == 0){

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

                [
                    'name' => 'Administrator',
                    'email' => 'admin@app.com',
                    'password' => bcrypt('password'),
                    'created_at' => date('Y-m-d H:i:s'),
                    'updated_at' => date('Y-m-d H:i:s'),
                ],
                [
                    'name' => 'Agency',
                    'email' => 'agency@app.com',
                    'password' => bcrypt('password'),
                    'created_at' => date('Y-m-d H:i:s'),
                    'updated_at' => date('Y-m-d H:i:s'),
                ],
                [
                    'name' => 'End',
                    'email' => 'endcustomer@app.com',
                    '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 "; }

    }
}

推荐