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 เดียว ถ้ามี returntruehasAny()– ใช้ตรวจสอบหลาย keys พร้อมกัน ถ้ามีอย่างน้อย 1 key ก็ returntrue- ทั้งสอง methods รองรับ dot notation สำหรับ nested arrays
- ใช้บ่อยในการตรวจสอบ config, request data, หรือ permissions
และนี่ก็คือทั้งหมดสำหรับ has() และ hasAny() แล้ว หวังว่าจะเป็นประโยชน์นะครับ 🎉
บทความถัดไป: Laravel Collections: filter() – กรองข้อมูลใน Collection
