Appearance
🗄️ Workshop 2: Database & Seeding
ใน Workshop นี้เราจะมาจัดการข้อมูลใน Database เพื่อให้พร้อมสำหรับการทดสอบ API และ Frontend ในขั้นตอนถัดไป
เป้าหมาย: มีข้อมูลตัวอย่าง (Dummy Data) ในตาราง products อย่างน้อย 5-10 รายการ
🌱 วิธีที่ 1: ใช้ Seeder (แนะนำ)
Laravel มีระบบ Seeder เพื่อช่วยสร้างข้อมูลจำลองได้ง่ายๆ
1. สร้าง Seeder
bash
php artisan make:seeder ProductSeeder2. เขียนโค้ดเพิ่มข้อมูล
ไปที่ database/seeders/ProductSeeder.php:
php
use App\Models\Product; // import Model
public function run(): void
{
// สร้างข้อมูลที่ 1
Product::create([
'name' => 'iPhone 15',
'description' => 'สมาร์ทโฟนรุ่นล่าสุดจาก Apple',
'price' => 32900,
'stock' => 10
]);
// สร้างข้อมูลที่ 2
Product::create([
'name' => 'MacBook Air',
'description' => 'แล็ปท็อปบางเบา ชิป M2',
'price' => 39900,
'stock' => 5
]);
// ... เพิ่มอีกตามต้องการ
}3. รัน Seeder
bash
php artisan db:seed --class=ProductSeeder🏭 วิธีที่ 2: ใช้ Model Factory (สำหรับข้อมูลเยอะๆ)
ถ้ายากได้ข้อมูลสัก 50 รายการ การนั่งเขียนทีละอันคงเหนื่อย เราใช้ Factory ช่วยได้
1. สร้าง Factory (ถ้ายังไม่มี)
bash
php artisan make:factory ProductFactory2. กำหนดโครงสร้างข้อมูลสุ่ม
ไปที่ database/factories/ProductFactory.php:
php
public function definition(): array
{
return [
'name' => fake()->word(), // สุ่มคำ
'description' => fake()->sentence(), // สุ่มประโยค
'price' => fake()->numberBetween(100, 10000), // สุ่มตัวเลข
'stock' => fake()->numberBetween(1, 100),
];
}3. เรียกใช้ใน Seeder
กลับไปที่ database/seeders/ProductSeeder.php หรือ DatabaseSeeder.php:
php
// สร้างข้อมูลสุ่ม 50 รายการ
\App\Models\Product::factory(50)->create();🛠 วิธีที่ 3: ใช้ Artisan Tinker (ทดสอบด่วน)
ถ้าไม่อยากสร้างไฟล์ Seeder สามารถยิงคำสั่งสดๆ ได้เลย
- เข้าโหมด Tinker:
bash
php artisan tinker- พิมพ์คำสั่ง PHP:
php
App\Models\Product::create(['name' => 'Mouse', 'price' => 500, 'stock' => 20]);(กด Enter แล้วพิมพ์ exit เพื่อออก)
✅ ตรวจสอบผลลัพธ์
เช็คว่าข้อมูลเข้าแล้วหรือยัง:
- เปิด phpMyAdmin ดูตาราง
products - หรือใช้ Postman ยิง
GET /api/productsดูว่ามี JSON กลับมาไหม