Laravel Collections: วิธีใช้ has() และ hasAny() ตรวจสอบ key ที่มีอยู่ใน Collection

Laravel Collections: วิธีใช้ has() และ hasAny() ตรวจสอบ key ที่มีอยู่ใน Collection

สวัสดีครับ กลับมาพบกับบทความ Laravel Collections กันอีกครั้ง วันนี้เราจะมาเรียนรู้ 2 methods ที่ใช้บ่อยมากๆ คือ has() และ hasAny() ซึ่งใช้สำหรับตรวจสอบว่าใน Collection มี key ที่เราต้องการอยู่หรือไม่


has() – ตรวจสอบ key เดียว

has() ใช้ตรวจสอบว่ามี key ที่ระบุอยู่ใน Collection หรือไม่ ซึ่ง return เป็น boolean (true หรือ false)

$collection = collect([
    'name' => 'John Doe',
    'email' => '[email protected]',
    'age' => 25
]);

// ตรวจสอบ key ที่มีอยู่
$collection->has('name'); // true

// ตรวจสอบ key ที่ไม่มี
$collection->has('phone'); // false

// ตรวจสอบ nested key (ใช้ dot notation)
$collection = collect([
    'user' => [
        'name' => 'John',
        'address' => [
            'city' => 'Bangkok'
        ]
    ]
]);

$collection->has('user.name'); // true
$collection->has('user.address.city'); // true
$collection->has('user.phone'); // false

กรณีใช้งานจริง

// ตรวจสอบก่อนดึงค่า
$config = collect(config('app.settings', []));

if ($collection->has('dark_mode')) {
    $darkMode = $collection->get('dark_mode');
}

hasAny() – ตรวจสอบหลาย keys

hasAny() ใช้ตรวจสอบว่ามี key ใดๆ จาก array ที่ระบุอยู่ใน Collection หรือไม่ (return true ถ้ามีอย่างน้อย 1 key)

$collection = collect([
    'name' => 'John Doe',
    'email' => '[email protected]',
    'age' => 25
]);

// มี key ใดๆ จาก array ที่ระบุหรือไม่
$collection->hasAny(['name', 'phone']); // true (เพราะมี 'name')
$collection->hasAny(['phone', 'address']); // false (ไม่มีทั้งคู่)
$collection->hasAny([]); // false (empty array)

กรณีใช้งานจริง

// ตรวจสอบว่ามี fields ที่ต้องการหรือไม่ก่อน validate
$requestData = collect($request->all());
$requiredFields = ['email', 'password', 'name'];

if ($requestData->hasAny($requiredFields)) {
    // มี field ที่ต้องการอย่างน้อย 1 อัน
}

// ตรวจสอบ permissions
$permissions = collect(['create', 'read', 'update', 'delete']);

$permissions->hasAny(['create', 'delete']); // true
$permissions->hasAny(['delete', 'super_admin']); // true

เปรียบเทียบ has() vs hasAny()

Method การใช้งาน Return
has($key) ตรวจสอบ key เดียว true ถ้ามี key นั้น
hasAny($keys) ตรวจสอบ array ของ keys true ถ้ามีอย่างน้อย 1 key
// has() - ตรวจสอบทีละ key
$collection->has('name');

// hasAny() - ตรวจสอบหลาย keys (OR logic)
$collection->hasAny(['name', 'email', 'phone']);

สรุป

  • has() – ใช้ตรวจสอบ key เดียว ถ้ามี return true
  • hasAny() – ใช้ตรวจสอบหลาย keys พร้อมกัน ถ้ามีอย่างน้อย 1 key ก็ return true
  • ทั้งสอง methods รองรับ dot notation สำหรับ nested arrays
  • ใช้บ่อยในการตรวจสอบ config, request data, หรือ permissions

และนี่ก็คือทั้งหมดสำหรับ has() และ hasAny() แล้ว หวังว่าจะเป็นประโยชน์นะครับ 🎉


บทความถัดไป: Laravel Collections: filter() – กรองข้อมูลใน Collection

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

ITTHIPAT

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

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

Scroll to Top