Метод pluck() в колекціях Laravel тепер підтримує closures для параметрів ключа та значення, що усуває потребу в громіздких підходах на зразок mapWithKeys() при простих трансформаціях під час вилучення даних
Раніше для трансформації даних під час застосування методу pluck() доводилося відмовлятись від його зручного синтаксису на користь більш складних методів роботи з колекціями:
$locations = City::get()->mapWithKeys(function ($city) {
return [$city->id => "{$city->country_code} - {$city->name}"];
});
Оновлений метод pluck() спрощує цей процес, підтримуючи closures:
$locations = City::get()
->pluck(fn ($city) => "{$city->country_code} - {$city->name}", 'id');
Розгляньмо систему управління запасами, де потрібно форматувати відображення продуктів:
<?php
namespace App\Services;
use App\Models\Product;
use App\Models\Category;
class InventoryService
{
public function getFormattedProducts()
{
$products = Product::with('category')->get()
->pluck(fn ($product) => "#{$product->sku} - {$product->name}", 'id');
return $products;
}
public function getPricedInventory()
{
$inventory = Product::active()->get()
->pluck(fn ($product) => '$' . number_format($product->price, 2), 'sku');
return $inventory;
}
public function getCategorizedItems()
{
$categories = Category::with('products')->get()
->pluck('name', fn ($category) => str_slug($category->name));
return $categories;
}
}
Цей підхід ідеально працює у візуальних контекстах, де важливими є форматовані дані. Створення випадаючих списків стає простішим:
$productOptions = Product::available()->get()
->pluck(fn ($product) => "{$product->brand} {$product->model}", 'id');
<select name="product_id" class="form-control">
@foreach($productOptions as $id => $displayName)
<option value="{{ $id }}">{{ $displayName }}</option>
@endforeach
</select>
Підтримка closures справляється з різними потребами трансформації без використання складних операцій мапування. Ви можете конкатенувати поля, застосовувати функції форматування, додавати префікси чи суфікси, а також створювати динамічні ключі на основі властивостей моделі. Це зберігає звичний інтерфейс pluck(), одночасно надаючи гнучкість, яка раніше була доступна лише через більш громіздкі методи колекцій
Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!
Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel
Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше