Видалення елементів колекції безпосередньо за допомогою методу forget у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 10 червня, 2025
Метод forget колекції Laravel пропонує простий і зручний спосіб видалення елементів за їхніми ключами безпосередньо з оригінальної колекції. Чи готові ви дізнатися, як ефективно використовувати цей метод для управління даними, наприклад, у системі кошика покупок? Читайте далі

Метод forget у колекціях Laravel пропонує простий спосіб видалення елементів за їхніми ключами, змінюючи при цьому оригінальну колекцію на місці.

Метод forget видаляє елементи за ключами:

$collection = collect(['email' => 'user@example.com', 'role' => 'admin']);
 
// Видалити один ключ
$collection->forget('email');
// Результат: ['role' => 'admin']
 
// Видалити кілька ключів
$collection->forget(['email', 'role']);
// Результат: []

Ось як ви можете використати його в менеджері кошика:

class CartManager
{
    protected $items;
 
    public function __construct(array $cartItems)
    {
        $this->items = collect($cartItems);
    }
 
    public function removeItems(string|array $productIds)
    {
        $this->items->forget($productIds);
 
        return $this;
    }
 
    public function clearExpiredDiscounts()
    {
        $expiredCoupons = ['summer_sale', 'flash_deal', 'early_bird'];
 
        $this->items->forget($expiredCoupons);
 
        return $this;
    }
 
    public function removeUnavailableProducts(array $outOfStock)
    {
        // Видалити конкретні недоступні товари
        $this->items
            ->forget(
                collect($outOfStock)
                    ->map(fn($sku) => "product_{$sku}")
                    ->all()
            );
 
        return $this;
    }
}
 
$cart = new CartManager([
    'product_123' => ['qty' => 2, 'price' => 29.99],
    'shipping' => 9.99,
    'summer_sale' => -5.00,
    'product_456' => ['qty' => 1, 'price' => 15.50]
]);
 
$cart->clearExpiredDiscounts()
     ->removeUnavailableProducts(['456']);

На відміну від інших методів колекцій, forget змінює оригінальну колекцію, що робить його ідеальним для безпосереднього маніпулювання даними