添加管理员

添加迁移文件

我们接下来需要为用户表加上管理员字段,以便用来判定该用户是否为管理员。

生成迁移文件

我们需要生成一个迁移文件来为用户表新增管理员字段。在生成迁移文件时,带上 --table 选项可以为指定数据表生成迁移文件。现在,让我们运行下面命令来为用户表新增管理员字段。

$ php artisan make:migration add_is_admin_to_users_table --table=users

修改迁移文件

我们需要在新建的迁移文件中为用户添加一个 is_admin 的布尔值类型字段来判别用户是否拥有管理员身份,该字段默认为 false,在迁移文件执行时对该字段进行创建,回滚时则需要对该字段进行移除。迁移文件最终编写完成的代码如下。

database/migrations/[timestamp]_add_is_admin_to_users_table.php

boolean('is_admin')->default(false);
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('is_admin');
        });
    }
}

运行迁移文件

在迁移文件创建成功之后,我们还需要运行数据库迁移。

$ php artisan migrate

修改数据填充文件

现在应用中还不存在拥有管理员身份的用户,让我们对数据填充文件进行更改,将第一个生成的用户设置为管理员。

database/seeds/UsersTableSeeder.php

times(50)->make();
        User::insert($users->makeVisible(['password', 'remember_token'])->toArray());

        $user = User::find(1);
        $user->name = 'Aufree';
        $user->email = '[email protected]';
        $user->password = bcrypt('password');
        $user->is_admin = true;
        $user->save();
    }
}

修改用户模型工厂

接下来我们还需要修改用户模型工厂,将其它生成的假用户管理员字段设置为 false。

database/factories/UserFactory.php

define(App\Models\User::class, function (Faker $faker) {
    $date_time = $faker->date . ' ' . $faker->time;
    static $password;

    return [
        'name' => $faker->name,
        'email' => $faker->safeEmail,
        'is_admin' => false,
        'password' => $password ?: $password = bcrypt('secret'),
        'remember_token' => str_random(10),
        'created_at' => $date_time,
        'updated_at' => $date_time,
    ];
});

对数据库进行重置和填充

$ php artisan migrate:refresh --seed

你可能感兴趣的:(添加管理员)