Dev to webs {Coding…}

เรียนรู้การพัฒนาซอฟเวอร์ เพื่อความรู้ที่ยั่งยืน

บทที่ 23: การสร้างและใช้งาน Model

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 แบบดั้งเดิม