Метод 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 змінює оригінальну колекцію, що робить його ідеальним для безпосереднього маніпулювання даними