Dev to webs {Coding…}

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

บทที่ 24: การ Query ข้อมูลด้วย Eloquent ORM

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 โดยตรง ช่วยให้นักพัฒนาทำงานกับฐานข้อมูลได้อย่างปลอดภัยและสะดวก