inquid / laravel-stock
为Eloquent模型保持库存
Requires
- php: ^8.0
Requires (Dev)
- orchestra/testbench: ^7.17
- phpunit/phpunit: ^9.5
README
为Eloquent模型保持库存。此包将跟踪模型的库存变更。您可以增加、减少、清除和设置库存。还可以检查模型是否在库存中(在特定日期/时间)。
安装
您可以通过Composer安装此包
composer require inquid/laravel-stock
在您的项目中运行 php artisan vendor:publish --provider="Inquid\Stock\StockServiceProvider"
将发布此包的所有文件。运行 php artisan migrate
来迁移表。现在您的数据库中将有一个 stock_mutations
表。
配置文件看起来像这样
<?php return [ /* |-------------------------------------------------------------------------- | Default table name |-------------------------------------------------------------------------- | | Table name to use to store mutations. | */ 'table' => 'stock_mutations', 'stock_mutation_model' => Inquid\Stock\StockMutation::class, //'special_date_class' => \MongoDB\BSON\UTCDateTime::class, ];
使用方法
添加 HasStock
特性将在模型上启用库存功能。
注意:如果您需要使用自定义模型,例如MongoDB,您可以在配置文件
stock.php
中更新要使用的模型。
use Inquid\Stock\HasStock; class Book extends Model { use HasStock; }
基本变更
$book->increaseStock(10); $book->decreaseStock(10); $book->mutateStock(10); $book->mutateStock(-10);
支持仓库
$book->increaseStock(10, ['warehouse' => $warehouse_first]); $book->decreaseStock(10, ['warehouse' => $warehouse_first]); $book->mutateStock(10, ['warehouse' => $warehouse_first]); $book->mutateStock(-10, ['warehouse' => $warehouse_first]);
清除库存
您也可以清除库存并直接设置新值。
$book->clearStock(); $book->clearStock(10); // With warehouse $book->clearStock(10, ['warehouse' => $warehouse_first]);
设置库存
您可以设置库存。这将创建一个新的变更,其中包含旧值和新值之间的差异。
$book->setStock(10);
检查模型是否在库存中
您还可以检查产品是否在库存中(带有最小值)。
$book->inStock(); $book->inStock(10);
带仓库
$book->inStock(); // anywhere $book->inStock(10); $book->inStock(10, ['warehouse' => $warehouse_first]);
当前库存
获取特定日期的当前库存值。
$book->stock; $book->stock(Carbon::now()->subDays(10));
注意:如果您使用MongoDb,您需要在配置文件中设置日期类。
'special_date_class' => \MongoDB\BSON\UTCDateTime::class,
特定仓库中的当前库存
获取特定仓库在特定日期的当前库存值。
$book->stock(null, ['warehouse' =>$warehouse_first]); $book->stock(Carbon::now()->subDays(10), ['warehouse' =>$warehouse_first]);
在仓库之间移动
将源仓库的金额移动到目标仓库。
$book->moveBetweenStocks(5,$warehouse_first, $warehouse_second);
库存参数
为StockMutation添加描述和/或引用模型。
$book->increaseStock(10, [ 'description' => 'This is a description', 'reference' => $otherModel, ]);
带仓库
$book->setStock(10, ['warehouse' => $warehouse_first]);
查询作用域
您还可以根据库存进行查询。
Book::whereInStock()->get(); Book::whereOutOfStock()->get();
测试
composer test
贡献
欢迎贡献,感谢大家 :)
关于Appstract(原始作者)
Appstract是一个来自荷兰的小团队。我们为Web开发者创建(开源)工具,并在Medium上撰写相关主题。您可以在Twitter上关注我们,为我们买杯啤酒或在Patreon上支持我们。
许可
MIT许可(MIT)。请参阅许可文件获取更多信息。