ป้ายกำกับ: Fresh

Laravel: UsersSeederLaravel: UsersSeeder

เพราะทำระบบ login ใหม่เลยมีการ ลบ, เปลี่ยน password, add user ใส่ role ไปมา แถม password มันจะต่างจากตัวอื่น ๆ ที่ต้อง hash ให้ถูกด้วย มันเหนื่อย เลยทำ UsersSeeder ออกมากรอกข้อมูลในตาราง users ให้มันจบ ๆ ไป
database/seeders/UsersSeeder.php

<?php

namespace Database\Seeders;

use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;

class UsersSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        // รายการ User ที่ต้องการสร้างเพื่อทดสอบระบบ
        $testUsers = [
            [
                'name'  => 'System Admin',
                'email' => '[email protected]',
                'role'  => 'admin'
            ],
            [
                'name'  => 'Accounting Manager',
                'email' => '[email protected]',
                'role'  => 'account'
            ],
            [
                'name'  => 'General Staff',
                'email' => '[email protected]',
                'role'  => 'staff'
            ],
            [
                'name'  => 'HR Manager',
                'email' => '[email protected]',
                'role'  => 'hr'
            ],
            [
                'name'  => 'General Manager',
                'email' => '[email protected]',
                'role'  => 'manager'
            ],
            [
                'name'  => 'Pitt Phunsanit',
                'email' => '[email protected]',
                'role'  => 'admin'
            ],
            [
                'name'  => 'IT Support',
                'email' => '[email protected]',
                'role'  => 'staff'
            ],
        ];

        foreach ($testUsers as $userData) {
            $user = User::updateOrCreate(
                ['email' => $userData['email']], // เช็คจาก email
                [
                    'status'    => 1,
                    'name'      => $userData['name'],
                    'password'  => Hash::make('password'),
                    'email_verified_at' => now(),
                    'created_at' => now(),
                    'updated_at' => now(),
                ]
            );

            // ถ้ารัน RoleSeeder ไปแล้ว สามารถเปิดบรรทัดนี้เพื่อผูก Role อัตโนมัติได้เลยครับ
            // if ($user->wasRecentlyCreated || !$user->hasRole($userData['role'])) {
            //    $user->assignRole($userData['role']);
            // }
        }

        $this->command->info('Test users for @plusmagi.com seeded successfully!');
    }
}

การใช้งาน

  • เพิ่มของเก่า
    php artisan migrate --seed --seeder=UsersSeeder
  • ลบทำใหม่ ( ลบ user เก่า ๆ หมดเลย )
    php artisan migrate:fresh --seed --seeder=UsersSeeder

อ่านเพิ่มเติม