appstract/laravel-stock

Keep stock for Eloquent models

Maintainers

👁 gizburdt

Package info

github.com/appstract/laravel-stock

pkg:composer/appstract/laravel-stock

Fund package maintenance!

Patreon

Statistics

Installs: 41 344

Dependents: 2

Suggesters: 0

Stars: 289

Open Issues: 6

1.2.0 2021-05-14 07:49 UTC

Requires

  • php: ^7.2|^8.0

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 216ab0f124ad7ec133d3b9881a70c584ece4de61

appstractlaravel-stock

This package is auto-updated.

Last update: 2026-06-14 19:00:08 UTC


README

👁 Latest Version on Packagist
👁 Total Downloads
👁 Software License
👁 Build Status

Keep stock for Eloquent models. This package will track stock mutations for your models. You can increase, decrease, clear and set stock. It's also possible to check if a model is in stock (on a certain date/time).

Installation

You can install the package via composer:

composer require appstract/laravel-stock

By running php artisan vendor:publish --provider="Appstract\Stock\StockServiceProvider" in your project all files for this package will be published. Run php artisan migrate to migrate the table. There will now be a stock_mutations table in your database.

Usage

Adding the HasStock trait will enable stock functionality on the Model.

use Appstract\Stock\HasStock;

class Book extends Model
{
 use HasStock;
}

Basic mutations

$book->increaseStock(10);
$book->decreaseStock(10);
$book->mutateStock(10);
$book->mutateStock(-10);

Clearing stock

It's also possible to clear the stock and directly setting a new value.

$book->clearStock();
$book->clearStock(10);

Setting stock

It is possible to set stock. This will create a new mutation with the difference between the old and new value.

$book->setStock(10);

Check if model is in stock

It's also possible to check if a product is in stock (with a minimal value).

$book->inStock();
$book->inStock(10);

Current stock

Get the current stock value (on a certain date).

$book->stock;
$book->stock(Carbon::now()->subDays(10));

Stock arguments

Add a description and/or reference model to de StockMutation.

$book->increaseStock(10, [
 'description' => 'This is a description',
 'reference' => $otherModel,
]);

Query Scopes

It is also possible to query based on stock.

Book::whereInStock()->get();
Book::whereOutOfStock()->get();

Testing

composer test

Contributing

Contributions are welcome, thanks to y'all :)

About Appstract

Appstract is a small team from The Netherlands. We create (open source) tools for Web Developers and write about related subjects on Medium. You can follow us on Twitter, buy us a beer or support us on Patreon.

License

The MIT License (MIT). Please see License File for more information.