Laravel Collections get() Method – วิธีดึงค่าจาก Collection ตาม Key
Introduction
Laravel Collections เป็นหนึ่งในฟีเจอร์ที่ทำให้ชีวิต developer ง่ายขึ้นมากตอนทำงานกับ arrays ซับซ้อน แทนที่จะเขียน loop เยอะๆ เราสามารถใช้ method สำเร็จรูปได้เลย
วันนี้มาดู method ที่ใช้บ่อยมากอีกตัวนึง นั่นคือ get() กัน
Basic Syntax
$collection->get($key, $default = null);
$key– key ที่ต้องการดึงค่า (string หรือ integer)$default– ค่าเริ่มต้นถ้า key ไม่มีอยู่ (optional)
Basic Usage
ดึงค่าจาก key ที่มีอยู่
$collection = collect([
'name' => 'Itthipat',
'age' => 28,
'city' => 'Bangkok'
]);
$name = $collection->get('name');
// Output: Itthipat
ดึงค่าจาก key ที่ไม่มี
$country = $collection->get('country');
// Output: null
Using Default Value
String Default
$country = $collection->get('country', 'Thailand');
// Output: Thailand
ถ้า key ‘country’ ไม่มี จะได้ค่า ‘Thailand’ แทน
Number Default
$age = $collection->get('age', 0);
// Output: 28 (because key exists)
Array Default
$tags = $collection->get('tags', []);
// Output: []
Callback Default (Laravel 8+)
$value = $collection->get('missing', function() {
return 'Computed default';
});
// Output: Computed default
Callback จะถูกเรียกก็ต่อเมื่อ key ไม่มีจริงๆ เหมาะสำหรับกรณีที่ต้องคำนวณค่าเริ่มต้น
getOrFail() Method
ถ้าต้องการให้โปรแกรม throw exception เมื่อ key ไม่มี ใช้ getOrFail():
$email = $collection->getOrFail('email');
// Throws \Illuminate\Support\ItemNotFoundException
เหมาะสำหรับกรณีที่ key นั้นจำเป็นต้องมี เช่น validation
Practical Examples
User from Request
$request = request();
$userId = collect($request->all())->get('user_id', auth()->id());
Config/Settings
$settings = collect(config('settings'));
$timezone = $settings->get('timezone', 'Asia/Bangkok');
Nested Arrays
$data = collect([
'user' => [
'profile' => [
'avatar' => 'avatar.png'
]
]
]);
$avatar = $data->get('user.profile.avatar');
// Output: avatar.png
Related Methods
first()– ดึง item แรกfirstWhere()– ดึง item แรกที่ตรงเงื่อนไขpluck()– ดึงค่าจาก key ที่ระบุในทุก itemonly()– ดึงเฉพาะ key ที่ระบุ
Summary
get() method เป็นเครื่องมือที่ใช้บ่อยมากในการดึงค่าจาก Collection โดยสามารถกำหนด default value ได้หลายรูปแบบ รวมถึง callback function สำหรับกรณีที่ต้องคำนวณค่า ถ้าต้องการให้ throw exception เมื่อ key ไม่มี ใช้ getOrFail() แทน
