PHPackages                             osamaelnagar/cart - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. osamaelnagar/cart

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

osamaelnagar/cart
=================

A standalone cart package for Laravel V11+.

v1.1.0(6mo ago)03MITPHPPHP ^8.2

Since Dec 26Pushed 6mo agoCompare

[ Source](https://github.com/OsamaElnagar/cart)[ Packagist](https://packagist.org/packages/osamaelnagar/cart)[ RSS](/packages/osamaelnagar-cart/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (4)Versions (4)Used By (0)

Cart Laravel Package
====================

[](#cart-laravel-package)

A flexible, polymorphic cart system for Laravel applications. This package allows you to add any model to a cart (Products, Services, etc.) and handles both authenticated and guest (cookie-based) shopping carts seamlessly.

Features
--------

[](#features)

- 🔄 **Polymorphic**: Add any Eloquent model to the cart.
- 🍪 **Guest Support**: Automatically handles guest carts using UUID-based cookies.
- 👤 **Auth Integration**: Links guest carts to users upon creation/authentication.
- 🛠 **Configurable**: Customize table names, models, and cookie settings.
- 🧠 **Smart Scoping**: Automatically filters carts by the current session/cookie.
- ⚡ **Auto-Caching**: Intelligent caching system that refreshes on updates for optimal performance.
- 🔌 **Ready-to-use Traits**: Simple integration with `User` and `Product` models.

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require osamaelnagar/cart
```

Setup
-----

[](#setup)

### 1. Publish Configuration

[](#1-publish-configuration)

```
php artisan vendor:publish --tag=cart-config
```

### 2. Run Migrations

[](#2-run-migrations)

```
php artisan migrate
```

### 3. Prepare Your Models

[](#3-prepare-your-models)

#### The User Model

[](#the-user-model)

Add the `Carter` trait to your User model to enable the relationship:

```
use OsamaElnagar\Cart\Traits\Carter;

class User extends Authenticatable {
    use Carter;
}
```

#### The Cartable Model (e.g., Product)

[](#the-cartable-model-eg-product)

Add the `Cartable` trait to any model you want to add to the cart:

```
use OsamaElnagar\Cart\Traits\Cartable;

class Product extends Model {
    use Cartable;
}
```

Basic Usage
-----------

[](#basic-usage)

### Using the Facade

[](#using-the-facade)

```
use OsamaElnagar\Cart\Facades\Cart;

// Add an item to the cart
Cart::add($product, $quantity = 1);

// Get all items in the current cart (automatically scoped by session/cookie)
$items = Cart::get();

// Update quantity
Cart::update($cartItemId, $newQuantity);

// Get total price (assumes cartable model has a 'price' attribute)
$total = Cart::total();

// Get the number of unique items types in cart
$count = Cart::itemsCount();

// Get the total quantity of all items combined
$qty = Cart::totalQuantity();

// Remove specific item
Cart::delete($cartItemId);

// Clear entire cart
Cart::clean();
```

### Automatic Scoping

[](#automatic-scoping)

The package uses a `CartScope` that automatically filters results by the `cart_id` cookie. You don't need to worry about manually filtering by user or session ID for basic retrieval.

```
// This will only return items belonging to the current visitor's session
$myCartItems = \OsamaElnagar\Cart\Models\Cart::all();
```

Hooks &amp; Events (Professional Control)
-----------------------------------------

[](#hooks--events-professional-control)

The package dispatches events throughout the cart lifecycle, allowing you to hook into any action:

- `OsamaElnagar\Cart\Events\ItemAdding`: Before an item is added.
- `OsamaElnagar\Cart\Events\ItemAdded`: After an item is added/incremented.
- `OsamaElnagar\Cart\Events\ItemUpdated`: After an item quantity is updated.
- `OsamaElnagar\Cart\Events\ItemDeleted`: After an item is removed.
- `OsamaElnagar\Cart\Events\CartCleared`: After the cart is emptied.

### Example: Listening for Cart Additions

[](#example-listening-for-cart-additions)

In your `EventServiceProvider`:

```
protected $listen = [
    \OsamaElnagar\Cart\Events\ItemAdded::class => [
        \App\Listeners\SyncCartToMarketingTool::class,
    ],
];
```

Extensions &amp; Macros
-----------------------

[](#extensions--macros)

The `Cart` repository uses Laravel's `Macroable` trait, meaning you can add your own methods to the `Cart` facade at runtime.

```
// In a ServiceProvider boot method
Cart::macro('getWeight', function () {
    return $this->get()->sum(fn($item) => $item->cartable->weight * $item->quantity);
});

// Use it anywhere
$totalWeight = Cart::getWeight();
```

Configuration
-------------

[](#configuration)

Check `config/cart.php` for customization options:

- `log_enabled`: Enable or disable package-wide logging (useful for debugging).
- `user_model`: The model used for user authentication.
- `table_name`: The database table name for cart items.
- `cache`: Configure caching behavior (enable/disable, lifetime, prefix).
- `cookie`: Settings for the guest cart cookie (name, lifetime).

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance68

Regular maintenance activity

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

3

Last Release

189d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/113356828?v=4)[Osama El Naggar](/maintainers/Osamaelnaggar)[@Osamaelnaggar](https://github.com/Osamaelnaggar)

---

Top Contributors

[![OsamaElnagar](https://avatars.githubusercontent.com/u/109289535?v=4)](https://github.com/OsamaElnagar "OsamaElnagar (8 commits)")

---

Tags

laravelcartshopping cartpolymorphic

### Embed Badge

![Health badge](/badges/osamaelnagar-cart/health.svg)

```
[![Health](https://phpackages.com/badges/osamaelnagar-cart/health.svg)](https://phpackages.com/packages/osamaelnagar-cart)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9762.4M131](/packages/roots-acorn)[yajra/laravel-oci8

Oracle DB driver for Laravel via OCI8

8793.2M25](/packages/yajra-laravel-oci8)[wearepixel/laravel-cart

A cart implementation for Laravel

1374.8k](/packages/wearepixel-laravel-cart)[api-platform/laravel

API Platform support for Laravel

58171.4k14](/packages/api-platform-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
