all() ใน Laravel Collections: วิธีดึง Array กลับมาใช้งาน

all() ใน Laravel Collections - วิธีดึง Array กลับมา

all() ใน Laravel Collections: วิธีดึง Array กลับมาใช้งาน

ทำความรู้จัก all() ใน Laravel Collections

all() คืออะไรและทำงานอย่างไร

เมธอด all() เป็นหนึ่งในเมธอดพื้นฐานที่สุดของ Laravel Collections ทำหน้าที่ดึงข้อมูล Array ที่อยู่ภายใน Collection กลับออกมาใช้งาน โดยเป็นการคืนค่า Array ต้นแบบ (underlying array) ที่ Collection นั้นครอบครองอยู่

$collection = collect([1, 2, 3, 4, 5]); $result = $collection->all(); // Result: [1, 2, 3, 4, 5] // Type: array

ทำไมต้องใช้ all() หลังจาก Collection Methods

เมื่อเราใช้งาน Collection methods ต่างๆ เช่น map(), filter(), reject() หรือ pluck() ผลลัพธ์ที่ได้จะเป็น Collection object ใหม่เสมอ หากเราต้องการนำข้อมูลไปใช้งานต่อในรูปแบบ Array ปกติ เราจำเป็นต้องใช้ all() เพื่อแปลงกลับ

$collection = collect([ ['name' => 'John', 'age' => 25], ['name' => 'Jane', 'age' => 30], ['name' => 'Bob', 'age' => 35] ]); $names = $collection->pluck('name')->all(); // Result: ['John', 'Jane', 'Bob']

การใช้งาน all() พื้นฐาน

ตัวอย่างการใช้ all() กับข้อมูลพื้นฐาน

$products = collect(['iPhone 15', 'MacBook Pro', 'iPad Air']); $array = $products->all(); // Output: ['iPhone 15', 'MacBook Pro', 'iPad Air']

การใช้ all() หลังจาก map() และ filter()

$numbers = collect([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); $evenNumbers = $numbers->filter(fn($num) => $num % 2 === 0)->all(); // Result: [2, 4, 6, 8, 10] $squared = collect([1, 2, 3, 4, 5])->map(fn($num) => $num * $num)->all(); // Result: [1, 4, 9, 16, 25]

เปรียบเทียบ all() vs toArray() vs values()

ความแตกต่างหลัก: all() vs toArray()

เมธอด ลักษณะการทำงาน
all() คืนค่า Array ต้นแบบโดยตรง ไม่ผ่านการแปลงใดๆ
toArray() แปลง Collection เป็น Array รวมถึง nested collections ด้วย
$nested = collect([ 'products' => collect(['phone', 'tablet']), 'name' => 'TechStore' ]); // all() - คืนค่าตรงๆ $nested->all(); // toArray() - แปลงทุกอย่างเป็น Array $nested->toArray();

เมื่อไหร่ควรใช้ตัวไหน

  • ใช้ all() เมื่อต้องการประสิทธิภาพสูงสุด
  • ใช้ toArray() เมื่อมี nested collections
  • ใช้ values() เมื่อต้องการ re-index Array

Performance: ทำไม all() ถึงเร็วกว่า

เมธอด all() ทำงานเร็วกว่า toArray() เพราะไม่ต้องทำ recursive conversion เป็นเพียงการคืนค่า reference ไปยัง array ต้นแบบ

ตัวอย่างการใช้งานจริงในโปรเจกต์

กรณีศึกษาที่ 1: หลังจาก filter() ข้อมูล

$users = collect([ ['name' => 'John', 'active' => true], ['name' => 'Jane', 'active' => false], ['name' => 'Bob', 'active' => true] ]); $activeUsers = $users->filter(fn($user) => $user['active'])->all();

กรณีศึกษาที่ 2: การส่งข้อมูลกลับไปยัง View หรือ API

public function index() { $products = Product::all()->filter(fn($p) => $p->price > 1000)->map(fn($p) => ['id'=>$p->id,'name'=>$p->name])->all(); return response()->json(['success'=>true,'data'=>$products]); }

เมธอด all() เป็นเครื่องมือที่ทรงพลังและจำเป็นสำหรับ Laravel Collections โดยเฉพาะเมื่อต้องการประสิทธิภาพสูงสุด

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

ITTHIPAT

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

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

Scroll to Top