Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Tips 14 серпня 2026

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']

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Інші поради

Tips 23 жовтня 2026

`required_if` - умовно обов’язкові поля

Поле має бути обов’язковим лише за певних умов?

required_if робить це чисто.

Синтаксис:

required_if:another_field,value

Коли корисно:

  • Поля оплати залежно від методу
  • Адреса залежно від перемикача
  • Динамічні секції форми

Кілька значень:

через кому.

Порада: для зворотної логіки використовуйте required_unless.

public function rules()
{
  return [
    'payment_method' => 'required|in:card,bank,paypal',
    'card_number' => 'required_if:payment_method,card',
    'bank_account' => 'required_if:payment_method,bank',
    'paypal_email' => 'required_if:payment_method,paypal',

    'account_type' => 'required|in:personal,business',
    'company_name' => 'required_if:account_type,business',
  ];
}
Tips 21 жовтня 2026

`dimensions` - точна валідація розмірів зображення

Користувачі завантажують величезні фото — верстка ламається через неправильні розміри.

dimensions валідує ширину, висоту та співвідношення сторін.

Обмеження:

  • min_width, max_width
  • min_height, max_height
  • width, height (точні)
  • ratio (width/height)

Коли корисно:

  • Аватар (тільки квадрат)
  • Банер (задане співвідношення)
  • Генерація прев’ю
  • Вимоги адаптивного дизайну

Порада: комбінуйте з image, mimes та max для повної перевірки.

public function rules()
{
  return [
    'avatar' => [
      'required', 'image',
      'dimensions:width=200,height=200',
    ],
    'banner' => [
      'required', 'image',
      'dimensions:min_width=1200,min_height=300',
    ],
    'thumbnail' => [
      'required', 'image', 'dimensions:ratio=16/9',
    ],
  ];
}
Tips 19 жовтня 2026

Валідація Enum - типобезпечні значення у формах

Статус може бути pending, active, inactive. Валідувати рядками?

PHP 8.1 Enums + Laravel validation = типобезпека.

Rule::enum() валідує значення по Enum case’ах автоматично.

Переваги:

  • Змінили Enum — валідація підлаштувалась
  • Жодних хардкод-рядків
  • Автодоповнення в IDE
  • Зручний рефакторинг

Порада: використовуйте backed enums (string/int) для збереження в БД.

enum OrderStatus: string
{
  case Pending = 'pending';
  case Processing = 'processing';
  case Completed = 'completed';
}

public function rules()
{
  return [
    'status' => ['required', Rule::enum(OrderStatus::class)],
  ];
}

// Каст у моделі - і жодних рядкових статусів
protected $casts = ['status' => OrderStatus::class];
Tips 16 жовтня 2026

`confirmed` - підтвердження пароля без ручних порівнянь

Робите підтвердження пароля й порівнюєте поля вручну?

confirmed робить це автоматично.

Як працює:

Перевіряє, що поле збігається з {field}_confirmation.

Для password автоматично очікує password_confirmation.

Конвенція:

  • Поле: password
  • Підтвердження: password_confirmation

Працює з:

будь-якими полями — пароль, email тощо.

Порада: поле _confirmation не потрібно валідувати окремо.

public function rules()
{
  return [
    'password' => 'required|confirmed|min:8',
    'email' => 'required|email|confirmed',
    'new_password' => 'required|confirmed|min:8',
  ];
}
Tips 14 жовтня 2026

`prohibits` - взаємовиключна валідація

Користувач може платити карткою АБО PayPal. Не обома.

Писати кастомну логіку? Є вбудоване правило.

prohibits гарантує, що поле не може бути присутнім разом з іншим.

Коли корисно:

  • Взаємовиключні способи оплати
  • Або email, або телефон
  • Умовні обмеження полів

Схожі правила:

  • required_without — потрібно A, якщо B немає
  • required_with — потрібно A, якщо B є
  • prohibits — A забороняє B

Порада: комбінуйте з required_without для сценарію “або A, або B, але не обидва”.

public function rules()
{
  return [
    'card_number' => 'prohibits:paypal_email',
    'paypal_email' => 'prohibits:card_number',

    'email' => 'required_without:username|prohibits:username',
    'username' => 'required_without:email|prohibits:email',
  ];
}
Завантаження...