Skip to content

🛠️ Workshop 1: Building Backend API

ใน Workshop นี้เราจะสร้าง REST API สำหรับระบบจัดการสินค้า "MyStore"

เป้าหมาย: ได้ API Endpoint สำหรับ:

  • ดูรายการสินค้าทั้งหมด (GET)
  • ดูรายละเอียดสินค้าทีละชิ้น (GET)
  • เพิ่มสินค้าใหม่ (POST)
  • แก้ไขสินค้า (PUT)
  • ลบสินค้า (DELETE)

🏁 Step 1: สร้างโปรเจกต์ Laravel

เปิด Terminal แล้วรันคำสั่ง:

bash
# 1. สร้างโปรเจกต์ใหม่
composer create-project laravel/laravel:^10.0 my-store-api

# 2. เข้าสู่โฟลเดอร์
cd my-store-api

# 3. รัน Server (เช็คว่าทำงานได้)
php artisan serve

🗄️ Step 2: ตั้งค่า Database

  1. เปิดโปรแกรมจัดการ Database (เช่น phpMyAdmin หรือ HeidiSQL)
  2. สร้าง Database ใหม่ชื่อ my_store
  3. เปิดไฟล์ .env ในโปรเจกต์ แก้ไขส่วนนี้:
ini
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_store  <-- แก้เป็นชื่อที่สร้าง
DB_USERNAME=root      <-- username ของคุณ
DB_PASSWORD=          <-- password ของคุณ

🏗️ Step 3: สร้าง Model และ Migration

เราจะสร้างตาราง products

bash
php artisan make:model Product -m

ไปที่ไฟล์ database/migrations/xxxx_xx_xx_create_products_table.php แก้ไข function up:

php
public function up(): void
{
    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->text('description')->nullable();
        $table->decimal('price', 10, 2);
        $table->integer('stock')->default(0);
        $table->timestamps();
    });
}

รัน Migration เพื่อสร้างตารางจริง:

bash
php artisan migrate

📝 Step 4: กำหนด Fillable ใน Model

ไปที่ app/Models/Product.php เพิ่มโค้ด:

php
protected $fillable = [
    'name',
    'description',
    'price',
    'stock'
];

🎮 Step 5: สร้าง Controller

bash
php artisan make:controller ProductController --api

ไปที่ app/Http/Controllers/ProductController.php ใส่ Logic CRUD:

php
use App\Models\Product; // อย่าลืม import

public function index()
{
    return Product::all();
}

public function store(Request $request)
{
    $request->validate([
        'name' => 'required',
        'price' => 'required|numeric'
    ]);
    return Product::create($request->all());
}

public function show(string $id)
{
    return Product::findOrFail($id);
}

public function update(Request $request, string $id)
{
    $product = Product::findOrFail($id);
    $product->update($request->all());
    return $product;
}

public function destroy(string $id)
{
    return Product::destroy($id);
}

🛣️ Step 6: สร้าง Route

ไปที่ routes/api.php:

php
use App\Http\Controllers\ProductController;

Route::apiResource('products', ProductController::class);

✅ Step 7: ทดสอบ API

(ใช้ Postman หรือ Thunder Client)

  1. GET http://localhost:8000/api/products -> ควรได้ [] (ว่างเปล่า)
  2. POST http://localhost:8000/api/products -> Body (JSON):
    json
    {
      "name": "NoteBook",
      "price": 25000
    }
    -> ควรได้ Product กลับมา