Laravel – EP13 Database กับการใช้งาน Eloquent

สอน Laravel

Laravel ใช้ Eloquent ORM เป็นตัวช่วยในการเชื่อมต่อฐานข้อมูล โดย Eloquent จะมีการแปลงข้อมูลในฐานข้อมูลเป็นออบเจกต์ (Object) บนภาษา PHP ซึ่งช่วยให้นักพัฒนาสามารถเขียนโค้ดที่เชื่อมต่อฐานข้อมูลแบบง่ายขึ้น โดยไม่ต้องเขียน SQL เอง

เพื่อใช้งาน Eloquent คุณสามารถสร้างคลาสที่สืบทอดจากคลาส Eloquent และปรับปรุงข้อมูลตามความต้องการ คลาสนี้จะเรียกว่า “Model” ซึ่งจะเป็นตัวแทนของตารางในฐานข้อมูลนั่นเอง

หากต้องการสร้าง Model สำหรับตาราง “users” ของฐานข้อมูล สามารถสร้างไฟล์ “User.php” ภายในโฟลเดอร์ “app/Models” และสร้างไฟล์ User.php แล้วเขียนคลาสดังนี้

หลังจากนั้น ให้ไฟล์ใน Controller สามารถเรียกใช้งาน Eloquent เพื่อดึงข้อมูลจากตาราง “users” ของฐานข้อมูลได้ดังนี้

จากตัวอย่างข้างต้น สามารถใช้งานฟังก์ชัน all เพื่อดึงข้อมูลทั้งหมดจากตาราง “users” และนำข้อมูลทั้งหมดนั้นไปแสดงผลบนหน้าจอผ่านทางเทมเพลท (view) ไฟล์ resources/views/users/index.blade.php

น่าจะเป็นสิ่งที่มีประโยชน์มากสำหรับนักพัฒนาเว็บแอพพลิเคชัน เพราะมันช่วยให้สร้างโค้ดที่ลดข้อผิดพลาดลง โดยไม่ต้องเขียนคำส่ง SQL ของฐานข้อมูลขึ้นมาเอง นอกจากนี้ Eloquent ยังมีการสนับสนุนการใช้งานฟังก์ชันการค้นหาและการเรียงลำดับข้อมูล ทำให้คุณสามารถสร้างโค้ดที่มีประสิทธิภาพสูงขึ้นได้อีกด้วย

นอกจากนี้ Eloquent ยังมีการสนับสนุนการทำงานร่วมกับความสัมพันธ์ของข้อมูลระหว่างตารางต่าง ๆ หรือเรียกว่า Relation ซึ่งช่วยให้สามารถสร้างโค้ดที่สามารถเข้าถึงข้อมูลที่เกี่ยวข้องกันได้ง่ายขึ้น ตัวอย่างเช่น หากตาราง “users” มีความสัมพันธ์กับตาราง “orders” ซึ่งเป็น 1-N ดังนั้นสามารถสร้างฟังก์ชันที่เรียกว่า “orders” ใน Model ของ “User” เพื่อเข้าถึงข้อมูลการสั่งซื้อของผู้ใช้นั้นๆ ดังนี้ โดยให้เข้าไปแก้ไข code ที่ไฟล์ app\Models\User.php

จากตัวอย่างข้างต้น สามารถเรียกใช้งานฟังก์ชัน orders เพื่อเข้าถึงข้อมูลการสั่งซื้อของผู้ใช้นั้นๆ ได้ดังนี้ ใน Controller

Eloquent ยังมีการสนับสนุนการทำงานร่วมกับความสัมพันธ์ของข้อมูลอื่น ๆ เช่น ความสัมพันธ์ 1-1, N-1 และ N-N เพื่ออธิบายความสัมพันธ์นี้ในรูปแบบของคลาส สามารถใช้คำสั่งต่าง ๆ ของ Eloquent เพื่อสร้างความสัมพันธ์นี้ได้ ตัวอย่างเช่น การสร้างความสัมพันธ์ 1-1 ระหว่าง Model ของ “User” กับ Model ของ “Profile” คุณ สามารถเขียนโค้ดดังนี้ ที่ไฟล์ app\Models\User.php

จากตัวอย่างข้างต้น สามารถเรียกใช้งานฟังก์ชัน profile เพื่อเข้าถึงข้อมูลของโปรไฟล์ของผู้ใช้นั้นๆ ได้ดังนี้ใน Controller

Eloquent ยังสามารถช่วยให้คุณสร้างความสัมพันธ์ของข้อมูลแบบ N-N ได้ ด้วยการใช้คำสั่ง belongsToMany แทน ตัวอย่างเช่น การสร้างความสัมพันธ์ N-N ระหว่าง Model ของ “User” กับ Model ของ “Role” สามารถเขียนโค้ดดังนี้

จากตัวอย่างข้างต้น สามารถเรียกใช้งานฟังก์ชัน roles เพื่อเข้าถึงข้อมูลของบทบาทของผู้ใช้นั้นๆ ได้ดังนี้ ใน Controller

นอกจากนี้ ยังสามารถเรียกใช้งานฟังก์ชันต่าง ๆ ของ Eloquent เพื่อจัดการข้อมูลของตารางอื่นๆ ได้อย่าง save, update, delete หรือการเรียกดูข้อมูลแบบกำหนดเงื่อนไขได้ ตัวอย่างเช่น การอัพเดทข้อมูลของผู้ใช้ที่มี ID เท่ากับ 1 สามารถเขียนโค้ดดังนี้

นอกจากนี้ ยังสามารถเรียกใช้งานคำสั่ง update ของ Eloquent เพื่ออัพเดทข้อมูลทีละหลายฟิลด์พร้อมๆ กันได้ เช่น

นอกจากนี้ยังสามารถเรียกใช้งานคำสั่ง delete ของ Eloquent เพื่อลบข้อมูลทีละหลายแถวพร้อมๆ กันได้ เช่น

เพื่อที่จะเข้าถึงข้อมูลแบบกำหนดเงื่อนไข สามารถใช้ฟังก์ชัน where ของ Eloquent ซึ่งจะสร้างคำสั่ง WHERE ของ SQL สำหรับการค้นหาข้อมูลได้ ตัวอย่างเช่น การเรียกดูข้อมูลของผู้ใช้ที่มีอีเมลล์ลงทะเบียนเป็น “john@example.com” สามารถเขียนโค้ดดังนี้

สามารถปรับปรุงฟังก์ชัน where เพิ่มเติมโดยฟังก์ชันอื่น ๆ เช่น orWhere หรือ whereIn ซึ่งจะช่วยค้นหาข้อมูลตามเงื่อนไขที่กำหนดเพิ่มเติม ตัวอย่างเช่น การเรียกดูข้อมูลของผู้ใช้ที่มีอีเมลล์ลงทะเบียนเป็น “john@example.com” หรือ “jane@example.com” สามารถเขียนโค้ดดังนี้

นอกจากนี้ ยังสามารถใช้ฟังก์ชัน whereIn เพื่อค้นหาข้อมูลของผู้ใช้ที่มีอีเมลล์ลงทะเบียนอยู่ในรายการที่กำหนด ตัวอย่างเช่น การเรียกดูข้อมูลของผู้ใช้ที่มีอีเมลล์ลงทะเบียนเป็น “john@example.com” หรือ “jane@example.com” สามารถเขียนโค้ดดังนี้

Eloquent ยังมีฟังก์ชันอื่น ๆ ที่สามารถใช้งานเพื่อค้นหาข้อมูลแบบกำหนดเงื่อนไขได้ เช่น whereBetween หรือ whereNotIn สามารถศึกษาเพิ่มเติมได้จากเอกสารของ Laravel

การใช้งาน Eloquent นอกจากทำให้นักพัฒนาสะดวกสบายยังทำให้งานโปรเจ็คต่างๆเสร็จอย่างรวดเร็ว อีกทั้งยัง code ยังเป็นระเบียนและสามารถต่อยอดแก้ไขได้ในอนาคต ผู้เขียนหวังว่าบทความนี้จะเป็นประโยชน์ต่อผู้อ่าน หากมีข้อสงสัยตรงไหนสอบถามใน Comment ได้เลยครับ

ขอบคุณครับ

You May Also Like

About the Author: Onmobile

โปรแกรมเมอร์
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments