collect() ใน Laravel Collections – วิธีใช้งานและตัวอย่างโค้ด

collect() ใน Laravel Collections - Laravel Collections Tutorial

collect() ใน Laravel Collections

ต้องจัดการ array ข้อมูลแบบมืออาชีพ แต่ native PHP functions ยังไม่พอใช่ไหม? collect() เป็นจุดเริ่มต้นที่จะเปลี่ยน array ธรรมดาให้กลายเป็น Collection ที่ทรงพลังพร้อมเครื่องมือช่วยจัดการข้อมูลแบบ chainable และ expressive ในทันที


🔧 วิธีใช้งาน

พื้นฐาน

use Illuminate\Support\Collection;

// สร้างจาก array
$collection = collect([1, 2, 3, 4, 5]);
// Illuminate\Support\Collection {#1234
//   all: [1, 2, 3, 4, 5],
// }

สร้างจากหลาย source

// จาก associative array
$collection = collect([
    "name" => "Somchai",
    "age" => 30,
    "city" => "Bangkok"
]);

// จาก object
$user = (object) ["id" => 1, "name" => "Test"];
$collection = collect((array) $user);

// จาก string (ตัวอักษรแต่ละตัว)
$collection = collect("hello");
// ["h", "e", "l", "l", "o"]

Chain methods กันเลย!

$result = collect([5, 3, 1, 4, 2])
    ->sort()
    ->map(fn($n) => $n * 2)
    ->take(3)
    ->toArray();
// [2, 6, 8]

📌 ตัวอย่างใช้งานจริง

Example 1: จัดการ products ใน e-commerce

$products = collect([
    ["id" => 1, "name" => "iPhone 15", "price" => 35000, "stock" => 10],
    ["id" => 2, "name" => "Samsung S24", "price" => 32000, "stock" => 5],
    ["id" => 3, "name" => "Xiaomi 14", "price" => 22000, "stock" => 0],
]);

// หาสินค้าที่มี stock
$inStock = $products->filter(fn($p) => $p["stock"] > 0);

// คำนวณราคารวม
$totalValue = $products->sum(fn($p) => $p["price"] * $p["stock"]);
// 500,000 บาท

Example 2: จัดการ user data จาก API

$users = collect(json_decode($apiResponse, true))
    ->map(fn($user) => [
        "id" => $user["id"],
        "name" => $user["first_name"] . " " . $user["last_name"],
        "email" => $user["email"]
    ])
    ->keyBy("id")
    ->only([1, 3, 5]); // เลือกเฉพาะ user id 1, 3, 5

Example 3: Pagination แบบ manual

$allItems = collect(range(1, 100)); // ข้อมูล 100 รายการ

$page = 2;
$perPage = 10;

$items = $allItems
    ->forPage($page, $perPage) // [11, 12, ..., 20]
    ->values(); // reset keys → [0=>11, 1=>12, ...]

📌 สรุป

  • collect() เป็น gateway เข้าสู่ Laravel Collections API
  • แปลง array/object/string → Collection object ในทันที
  • เปิดใช้ methods พันธุ์ใหม่: map(), filter(), sort(), reduce() ฯลฯ
  • รองรับ chaining → เขียน code สั้น อ่านง่าย
  • เหมาะสำหรับ data processing, filtering, transforming

ถ้าต้องจัดการข้อมูลใน PHP → ใช้ collect() ดีกว่า native array เสมอ! 🚀

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

ITTHIPAT

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

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

Scroll to Top