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()ใช้สำหรับดึงข้อมูลทั้งหมดจากตารางproductsProduct::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 แบบดั้งเดิม