pluck() - витягуй значення професійно
Потрібен масив ID? Організовувати цикл і додавати значення вручну не потрібно.
pluck() дістає значення стовпця в простий масив. В один рядок.
Розширені можливості:
- Pluck із ключем - створює асоціативний масив
- Pluck у зв'язках - без N+1
- Pluck на кілька рівнів - через dot notation
Коли варто використовувати:
- Формування select-опцій
- Отримання ID для whereIn()
- Створення lookup-масивів
Порада: використовувати pluck() безпосередньо на query builder - ефективніше, ніж завантажувати моделі.
// Погано: цикл і ручне збирання
$ids = [];
foreach ($users as $user) {
$ids[] = $user->id;
}
// Добре: один рядок
$ids = $users->pluck('id');
// [1, 2, 3, 4, 5]
// Із ключем
$userNames = $users->pluck('name', 'id');
// [1 => 'John', 2 => 'Jane', 3 => 'Bob']
// Безпосередньо з бази - ефективніше
$emails = User::pluck('email');
$emailsById = User::pluck('email', 'id');
// Dot notation
$posts = Post::with('author')->get();
$authorNames = $posts->pluck('author.name');
// Кілька рівнів
$comments = Comment::with('post.author')->get();
$authors = $comments->pluck('post.author.name');
// Для select
$countries = Country::pluck('name', 'code');
// ['US' => 'United States', 'GB' => 'United Kingdom']