Eloquent ORM เป็นเครื่องมือใน Laravel ที่ช่วยให้เราสามารถทำงานกับฐานข้อมูลได้อย่างง่ายดายและมีประสิทธิภาพ โดยไม่จำเป็นต้องเขียนคำสั่ง SQL โดยตรง Eloquent ช่วยให้สามารถดึงข้อมูล เพิ่ม แก้ไข และลบข้อมูลในตารางได้สะดวกมากขึ้นด้วยการใช้เมธอดต่างๆ ที่อ่านง่ายและเข้าใจง่าย
การดึงข้อมูลจากฐานข้อมูลด้วย Eloquent ORM
1. การดึงข้อมูลทั้งหมด
เราสามารถใช้เมธอด all()
เพื่อดึงข้อมูลทั้งหมดจาก Model ได้ ซึ่งจะดึงข้อมูลทุกแถวจากตารางที่เชื่อมต่อกับ Model นั้นๆ
use App\Models\Product;
$products = Product::all();
2. การค้นหาข้อมูลด้วย Primary Key
การค้นหาข้อมูลด้วย Primary Key สามารถใช้เมธอด find()
โดยใส่ค่าของ Primary Key เป็นพารามิเตอร์
$product = Product::find(1);
ในตัวอย่างนี้จะดึงข้อมูลของสินค้าที่มี id
เท่ากับ 1
3. การใช้เงื่อนไขในการ Query
Eloquent มีเมธอดที่ช่วยให้เราสามารถใช้เงื่อนไขได้ เช่น where()
ซึ่งสามารถใช้เพื่อกรองข้อมูลที่ต้องการได้ โดยสามารถใช้ get()
เพื่อดึงข้อมูลทั้งหมดที่ตรงกับเงื่อนไข หรือ first()
เพื่อดึงข้อมูลแถวแรกที่ตรงกับเงื่อนไข
// ดึงสินค้าที่มีราคา 500 บาท
$products = Product::where('price', 500)->get();
// ดึงสินค้าที่มีชื่อ "Laptop"
$product = Product::where('name', 'Laptop')->first();
4. การจัดเรียงข้อมูล
Eloquent มีเมธอด orderBy()
สำหรับจัดเรียงข้อมูลในลำดับที่ต้องการ เช่น จากน้อยไปมาก หรือจากมากไปน้อย
5. การจำกัดจำนวนข้อมูลที่ดึงมา
เมธอด limit()
และ take()
ใช้สำหรับกำหนดจำนวนข้อมูลที่ต้องการดึงมาแสดง
// ดึงสินค้าจำนวน 5 รายการแรก
$products = Product::limit(5)->get();
// หรือใช้ take()
$products = Product::take(5)->get();
การ Query ข้อมูลแบบซับซ้อน
1. การ Query แบบ AND และ OR
เราสามารถใช้ where()
หลายครั้งเพื่อสร้างเงื่อนไข AND และใช้ orWhere()
เพื่อสร้างเงื่อนไข OR
// ดึงสินค้าที่มีราคา 500 บาทและมีสต็อกมากกว่า 10
$products = Product::where('price', 500)->where('stock', '>', 10)->get();
// ดึงสินค้าที่มีราคา 500 บาทหรือมีสต็อกมากกว่า 10
$products = Product::where('price', 500)->orWhere('stock', '>', 10)->get();
2. การใช้ Query แบบ Aggregates
Eloquent รองรับการทำงานแบบ Aggregate เช่น การหาค่าสูงสุด (max), ต่ำสุด (min), ค่าเฉลี่ย (avg), ผลรวม (sum) และการนับจำนวน (count)
// หาราคาสูงสุดของสินค้า
$maxPrice = Product::max('price');
// หาจำนวนสินค้าที่มีในตาราง
$productCount = Product::count();
การนำไปใช้งาน
การ Query ข้อมูลด้วย Eloquent ORM ทำให้การจัดการข้อมูลใน Laravel เป็นไปได้ง่ายดาย สามารถใช้คำสั่งเพื่อดึงข้อมูลที่ซับซ้อนและจัดเรียงข้อมูลได้อย่างรวดเร็ว โดยไม่จำเป็นต้องเขียน SQL โดยตรง ช่วยให้นักพัฒนาทำงานกับฐานข้อมูลได้อย่างปลอดภัยและสะดวก