การใช้งาน get() และ first() ใน Laravel ORM

ความแตกต่างระหว่าง get() กับ first() ใน Model ORM

เมื่อเราพูดถึงการดึงข้อมูลจากฐานข้อมูลในภาษา PHP โครงสร้างที่นิยมใช้อย่าง Laravel จะมีการใช้ Model ORM (Object-Relational Mapping) ซึ่งช่วยให้เราทำงานกับฐานข้อมูลได้สะดวกขึ้น ซึ่งคำสั่งยอดนิยมสองคำสั่งที่เราจะมาพูดถึงในวันนี้คือ get() กับ first()

การทำงานของ get()

get() เป็นคำสั่งที่ถูกใช้บ่อยในการดึงข้อมูลหลายแถวจากฐานข้อมูล คำสั่งนี้จะคืนค่า Collection ซึ่งคุณสามารถวนลูปได้

$users = User::where('status', 'active')->get();
foreach ($users as $user) {
    echo $user->name;
}

จากโค้ดข้างต้น เราได้ดึงข้อมูลผู้ใช้ที่มีสถานะเป็น ‘active’ ซึ่งอาจจะมีหลายแถว และสามารถวนลูปผ่านข้อมูลเหล่านั้นได้เลย

การทำงานของ first()

ในขณะที่ first() จะเลือกดึงข้อมูลเพียงแถวแรกที่ตรงตามเงื่อนไขที่กำหนด ซึ่งจะคืนค่าเป็น object แทนที่จะเป็น Collection

$firstUser = User::where('status', 'active')->first();
echo $firstUser->name;

จากโค้ดข้างต้น เราได้ดึงข้อมูลผู้ใช้ที่มีสถานะเป็น ‘active’ แต่จะดึงมาเพียงแถวแรกเท่านั้น นั่นหมายความว่าแม้ว่าจะมีข้อมูลหลายแถวที่ตรงกับเงื่อนไข เราก็จะได้ข้อมูลเพียงแค่แถวแรก

สิ่งที่ควรคำนึงถึง

1. ประสิทธิภาพ: หากคุณต้องการเพียงแค่แถวเดียวจากฐานข้อมูล คุณควรเลือกใช้ first() เนื่องจากจะใช้ทรัพยากรน้อยกว่า เมื่อเทียบกับ get() ที่จะดึงทุกแถวแล้วค่อยเลือก
2. การประมวลผลต่อจากการดึงข้อมูล: หากคุณต้องการประมวลผลและจัดการกับข้อมูลหลายแถว get() เป็นตัวเลือกที่ดี มันจะคืนค่า Collection ให้คุณได้จัดการต่อได้ง่ายๆ
3. ผลลัพธ์ที่ไม่พบข้อมูล: ควรตรวจสอบผลลัพธ์หลังจากใช้ first() เพราะถ้าไม่พบข้อมูลค่าที่คืนมาจะเป็น null

หวังว่าบทความนี้จะช่วยให้คุณเข้าใจถึงความแตกต่างของคำสั่ง get() และ first() ใน Model ORM และสามารถเลือกใช้งานได้ถูกต้องตรงตามความต้องการมากขึ้น!

เกี่ยวกับผู้เขียน

ITTHIPAT

สวัสดีครับผม อิทธิพัทธ์ (เป้) ชอบหาเทคนิคต่างๆที่ทำให้ชีวิต Programmer ง่ายขึ้น ทั้ง Automate, Library ชอบทำ Blog และ Video ถ้ามีเวลานะ!

ขอบคุณทุกคนที่ติดตาม และอ่านบทความของผมครับ ผมหวังว่าความรู้ที่เขียนขึ้นในเว็บไซต์นี้จะช่วยทุกท่านได้ไม่มากก็น้อย 

Scroll to Top