Model ใน Laravel คือส่วนที่ใช้ในการจัดการและโต้ตอบกับฐานข้อมูล โดย Laravel ใช้ Eloquent ORM (Object-Relational Mapping) ซึ่งช่วยให้การทำงานกับฐานข้อมูลเป็นไปอย่างมีประสิทธิภาพและเขียนโค้ดได้ง่ายขึ้น Model จะเป็นตัวแทนของตารางในฐานข้อมูล โดยที่แต่ละ Model จะแทนตารางหนึ่งตาราง ทำให้เราสามารถดึงข้อมูล เพิ่ม แก้ไข หรือลบข้อมูลได้โดยไม่ต้องเขียน SQL โดยตรง
การสร้าง Model
สามารถสร้าง Model ได้โดยใช้คำสั่ง Artisan ดังนี้:
php artisan make:model Product
คำสั่งนี้จะสร้างไฟล์ Model ชื่อ Product.php
ในโฟลเดอร์ app/Models
ซึ่งเป็นตำแหน่งที่เก็บ Model ทั้งหมดของแอปพลิเคชัน
นอกจากนี้ หากต้องการสร้าง Model พร้อม Migration สามารถใช้คำสั่ง:
php artisan make:model Product -m
ตัวเลือก -m
จะสร้างไฟล์ Migration พร้อมกับ Model ช่วยให้เราสามารถกำหนดโครงสร้างตารางสำหรับ Model นี้ได้ทันที
การใช้งาน Model เบื้องต้น
Model ที่สร้างขึ้นมาสามารถใช้ในการดำเนินการ CRUD (Create, Read, Update, Delete) ได้ เช่น
use App\Models\Product;
// สร้างข้อมูลใหม่
$product = new Product;
$product->name = 'Laptop';
$product->price = 50000;
$product->save();
// ดึงข้อมูล
$products = Product::all();
// แก้ไขข้อมูล
$product = Product::find(1);
$product->price = 55000;
$product->save();
// ลบข้อมูล
$product = Product::find(1);
$product->delete();
ในตัวอย่างนี้:
Product::all()
ใช้สำหรับดึงข้อมูลทั้งหมดจากตารางproducts
Product::find(1)
ใช้สำหรับค้นหาข้อมูลจาก Primary Key (id
ในที่นี้)save()
ใช้สำหรับบันทึกข้อมูลใหม่หรือแก้ไขข้อมูลในฐานข้อมูลdelete()
ใช้สำหรับลบข้อมูล
การกำหนดตารางและคอลัมน์ใน Model
โดยค่าเริ่มต้น Laravel จะเชื่อมต่อ Model กับตารางที่มีชื่อเป็นพหูพจน์ของชื่อ Model เช่น Model Product
จะเชื่อมต่อกับตาราง products
แต่สามารถกำหนดชื่อตารางที่ต้องการได้ใน Model
ตัวอย่างการกำหนดชื่อตารางใน Model:
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasFactory;
protected $table = 'my_products';
protected $fillable = ['name', 'price'];
}
ในตัวอย่างนี้:
- $table กำหนดชื่อตารางที่ต้องการเชื่อมโยง
- $fillable กำหนดคอลัมน์ที่สามารถบันทึกข้อมูลลงฐานข้อมูลได้ ซึ่งช่วยป้องกันการโจมตีแบบ Mass Assignment
การนำไปใช้งาน
การสร้างและใช้งาน Model ใน Laravel ช่วยให้การจัดการข้อมูลในฐานข้อมูลเป็นไปอย่างสะดวก Model เป็นชั้นกลางที่ช่วยให้เราทำงานกับข้อมูลโดยตรงได้ง่ายๆ ผ่าน Eloquent ORM โดยไม่ต้องเขียน SQL ทำให้โค้ดสะอาด อ่านง่าย และลดความผิดพลาดที่อาจเกิดจากการเขียน SQL แบบดั้งเดิม