หมวดหมู่: Laravel

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

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