Laravel Adminを使っていて、migrate fresh
したら、初期の管理者データが消えてしまいました。
さくっと直せるようにLaravel Adminで使われているSeederを利用して、データを投入できるようにします
#Seeder 作成
php artisan make:seeder AdminTablesSeeder
vendor/encore/laravel-admin/src/Auth/Database/AdminTablesSeeder.php
にLaravelAdminのSeederがあるので中身をコピーし、
ディレクトリ構成が異なるので、インポートを多少書き足します。
そうすると下記のように書き換えられます。
AdminTablesSeeder
<?php
use Illuminate\Database\Seeder;
use Encore\Admin\Auth\Database\Administrator;
use Encore\Admin\Auth\Database\Role;
use Encore\Admin\Auth\Database\Permission;
use Encore\Admin\Auth\Database\Menu;
class AdminTablesSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// create a user.
Administrator::truncate();
Administrator::create([
'username' => 'admin',
'password' => bcrypt('admin'),
'name' => 'Administrator',
]);
// create a role.
Role::truncate();
Role::create([
'name' => 'Administrator',
'slug' => 'administrator',
]);
// add role to user.
Administrator::first()->roles()->save(Role::first());
//create a permission
Permission::truncate();
Permission::insert([
[
'name' => 'All permission',
'slug' => '*',
'http_method' => '',
'http_path' => '*',
],
[
'name' => 'Dashboard',
'slug' => 'dashboard',
'http_method' => 'GET',
'http_path' => '/',
],
[
'name' => 'Login',
'slug' => 'auth.login',
'http_method' => '',
'http_path' => "/auth/login\r\n/auth/logout",
],
[
'name' => 'User setting',
'slug' => 'auth.setting',
'http_method' => 'GET,PUT',
'http_path' => '/auth/setting',
],
[
'name' => 'Auth management',
'slug' => 'auth.management',
'http_method' => '',
'http_path' => "/auth/roles\r\n/auth/permissions\r\n/auth/menu\r\n/auth/logs",
],
]);
Role::first()->permissions()->save(Permission::first());
// add default menus.
Menu::truncate();
Menu::insert([
[
'parent_id' => 0,
'order' => 1,
'title' => 'Dashboard',
'icon' => 'fa-bar-chart',
'uri' => '/',
],
[
'parent_id' => 0,
'order' => 2,
'title' => 'Admin',
'icon' => 'fa-tasks',
'uri' => '',
],
[
'parent_id' => 2,
'order' => 3,
'title' => 'Users',
'icon' => 'fa-users',
'uri' => 'auth/users',
],
[
'parent_id' => 2,
'order' => 4,
'title' => 'Roles',
'icon' => 'fa-user',
'uri' => 'auth/roles',
],
[
'parent_id' => 2,
'order' => 5,
'title' => 'Permission',
'icon' => 'fa-ban',
'uri' => 'auth/permissions',
],
[
'parent_id' => 2,
'order' => 6,
'title' => 'Menu',
'icon' => 'fa-bars',
'uri' => 'auth/menu',
],
[
'parent_id' => 2,
'order' => 7,
'title' => 'Operation log',
'icon' => 'fa-history',
'uri' => 'auth/logs',
],
]);
// add role to menu.
Menu::find(2)->roles()->save(Role::first());
}
}
seederの呼び出しに追加します
DatabaseSeeder
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call([
AdminTablesSeeder::class,
]);
}
}
#Composerのオートローダー再生成
composer dump-autoload
#実行
php artisan db:seed
#または
php artisan db:seed --class=AdminTablesSeeder