m165437 / eloquent-numbered
按顺序为你的 Eloquent 模型实例编号
v1.0.0
2018-08-21 03:38 UTC
Requires
- php: >=7.0
- illuminate/database: ~5.5.0|~5.6.0|~5.7.0
- illuminate/support: ~5.5.0|~5.6.0|~5.7.0
Requires (Dev)
- orchestra/testbench: ~3.5.0|~3.6.0|~3.7.0
- phpunit/phpunit: ^6.2|^7.0
This package is auto-updated.
Last update: 2024-08-27 07:21:19 UTC
README
此包按顺序为你的 Eloquent 模型实例编号,受自定义的 作用域 numbered
的限制。
在每次 created
、deleted
、updated
和 restored
事件中,作用域中的模型将被重新编号。
编号发生时,引发事件的模型将被注入到方法中,并可用于进一步限制作用域。
检索到的模型将包含一个 number
属性(可自定义)。
这有什么用?排名、定位、行号、某物的第五个——当无法即时计算编号时。
安装
通过 composer 安装此包
composer require m165437/eloquent-numbered
用法
将特性 M165437\EloquentNumbered\Numbered
添加到你的模型
use Illuminate\Database\Eloquent\Model; use M165437\EloquentNumbered\Numbered; class MyModel extends Model { use Numbered; ... }
在模型迁移中添加一个 number
字段
Schema::create('my_model', function (Blueprint $table) { $table->integer('number')->nullable(); ... });
如果你想要将此字段/属性命名为不同的名称,请在模型上设置相应的常量 NUMBER
,例如。
const NUMBER = 'rank';
配置
默认编号作用域(包含在特性中)按日期升序排序模型实例
public function scopeNumbered($query, $model = null) { return $query->oldest(); }
如果你想要自定义作用域,请将其添加到你的模型中。
编号发生时,引发事件的模型将被注入到方法中,并可用于进一步限制作用域,例如为每个用户单独编号模型实例。
public function scopeNumbered($query, $model = null) { return $query->oldest() ->when($model, function ($query, $model) { return $query->where('user_id', $model->user_id) }); }
测试
该包包含一些集成/冒烟测试,使用 Orchestra 设置。测试可以通过 phpunit 运行。
vendor/bin/phpunit
贡献
感谢您考虑为此包做出贡献!有关详细信息,请参阅 CONTRIBUTING。
许可证
此包根据 MIT 许可证(MIT)授权。有关更多信息,请参阅 LICENSE 文件。