Laravel คือเฟรมเวิร์ก PHP ที่ได้รับความนิยมสูงสุดในโลก ช่วยให้สร้างเว็บแอปขนาดใหญ่ได้เร็ว เป็นระเบียบ และปลอดภัย บทความนี้จะพาคุณรู้จักโครงสร้างและองค์ประกอบหลักของ Laravel เพื่อเริ่มต้นสร้างระบบจริง ═══════════════════════════════════════ 📌 1. Laravel คืออะไร และ MVC ═══════════════════════════════════════ Laravel เป็น PHP Framework ที่ใช้แนวคิด MVC แยกโค้ดเป็นส่วน ๆ ให้จัดการง่าย • Model → จัดการข้อมูล/ฐานข้อมูล • View → หน้าตาที่ผู้ใช้เห็น (Blade) • Controller → ตัวกลางรับคำขอ ประมวลผล ส่งข้อมูลไป View ข้อดี: มีเครื่องมือครบ (routing, ORM, auth, migration), เขียนน้อยได้มาก, ปลอดภัย และมีชุมชนใหญ่ ═══════════════════════════════════════ 🔧 2. ติดตั้งและสร้างโปรเจกต์ ═══════════════════════════════════════ ต้องมี PHP, Composer ก่อน แล้วสร้างโปรเจกต์ด้วยคำสั่ง ```bash # สร้างโปรเจกต์ Laravel ใหม่ composer create-project laravel/laravel myapp # เข้าโฟลเดอร์และรันเซิร์ฟเวอร์ cd myapp php artisan serve ``` เปิดเบราว์เซอร์ที่ http://127.0.0.1:8000 จะเห็นหน้าต้อนรับของ Laravel ═══════════════════════════════════════ 📁 3. โครงสร้างโฟลเดอร์สำคัญ ═══════════════════════════════════════ • app/Models/ → คลาส Model • app/Http/Controllers/ → Controller • routes/web.php → กำหนดเส้นทาง (URL) • resources/views/ → ไฟล์ Blade (หน้าเว็บ) • database/migrations/ → โครงสร้างตาราง • .env → ตั้งค่า (ฐานข้อมูล, แอป) • public/ → จุดเริ่มเว็บ (index.php) ═══════════════════════════════════════ 🛣️ 4. Routing — กำหนดเส้นทาง ═══════════════════════════════════════ เขียนใน routes/web.php ```php <?php use Illuminate\Support\Facades\Route; // เส้นทางง่าย ๆ คืนข้อความ Route::get('/hello', function () { return 'สวัสดี Laravel'; }); // ชี้ไปที่ Controller Route::get('/users', [UserController::class, 'index']); // รับพารามิเตอร์จาก URL Route::get('/user/{id}', function ($id) { return "ผู้ใช้ไอดี: $id"; }); ``` ═══════════════════════════════════════ 🎮 5. Controller — ตัวควบคุม ═══════════════════════════════════════ สร้างด้วย artisan แล้วเขียนเมธอด ```bash php artisan make:controller UserController ``` ```php <?php namespace App\Http\Controllers; use App\Models\User; class UserController extends Controller { public function index() { $users = User::all(); // ดึงผู้ใช้ทั้งหมด return view('users.index', compact('users')); } } ``` ═══════════════════════════════════════ 🎨 6. Blade View — หน้าตาเว็บ ═══════════════════════════════════════ ไฟล์ resources/views/users/index.blade.php ```php <h1>รายชื่อผู้ใช้</h1> <ul> @foreach($users as $user) <li>{{ $user->name }} - {{ $user->email }}</li> @endforeach </ul> @if($users->isEmpty()) <p>ยังไม่มีผู้ใช้</p> @endif ``` ไวยากรณ์ Blade: • {{ $var }} → แสดงค่า (escape อัตโนมัติ ปลอดภัย) • @foreach @if → คำสั่งควบคุม • @extends @section → สืบทอด layout ═══════════════════════════════════════ 🗄️ 7. Migration และ Model (Eloquent) ═══════════════════════════════════════ Migration = สร้างตารางด้วยโค้ด (ควบคุมเวอร์ชันฐานข้อมูลได้) ```bash php artisan make:migration create_posts_table php artisan migrate ``` ```php <?php // ในไฟล์ migration Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('body'); $table->timestamps(); }); ``` Eloquent Model = ตัวแทนตาราง เขียน query แบบสั้น ```php <?php // ดึงและจัดการข้อมูลด้วย Eloquent $posts = Post::all(); // ทั้งหมด $post = Post::find(1); // ตาม id $new = Post::create(['title' => 'สวัสดี', 'body' => '...']); // เพิ่ม $post->update(['title' => 'แก้ไขแล้ว']); // แก้ไข $post->delete(); // ลบ // มีเงื่อนไข $recent = Post::where('title', 'like', '%ข่าว%') ->orderBy('created_at', 'desc') ->get(); ``` ═══════════════════════════════════════ 🔄 8. คำสั่ง Artisan ที่ใช้บ่อย ═══════════════════════════════════════ ```bash php artisan serve # รันเซิร์ฟเวอร์ php artisan make:model Post -mc # สร้าง Model + migration + controller php artisan make:controller XController php artisan migrate # รัน migration php artisan route:list # ดูเส้นทางทั้งหมด php artisan make:migration ... # สร้าง migration ``` ═══════════════════════════════════════ ✅ 9. สรุปและเส้นทางต่อไป ═══════════════════════════════════════ • Laravel ใช้ MVC: Route → Controller → Model/View • ใช้ artisan สร้างไฟล์ต่าง ๆ อย่างรวดเร็ว • Eloquent ทำให้จัดการฐานข้อมูลง่ายมาก (ไม่ต้องเขียน SQL ตรง ๆ) • Blade ช่วยเขียนหน้าเว็บพร้อมลูป/เงื่อนไข และปลอดภัยจาก XSS • ตั้งค่าฐานข้อมูลใน .env ก่อน migrate เสมอ เส้นทางต่อไป: พื้นฐาน Route/Controller/View → Eloquent + Migration → Form/Validation → Authentication → REST API → Deploy จำไว้: Laravel ช่วยให้คุณโฟกัสที่ "ตรรกะธุรกิจ" ไม่ต้องเสียเวลากับงานซ้ำ ๆ 🚀