m165437/eloquent-numbered

按顺序为你的 Eloquent 模型实例编号

v1.0.0 2018-08-21 03:38 UTC

This package is auto-updated.

Last update: 2024-08-27 07:21:19 UTC


README

GitHub release Unstable License Twitter

此包按顺序为你的 Eloquent 模型实例编号,受自定义的 作用域 numbered 的限制。

在每次 createddeletedupdatedrestored 事件中,作用域中的模型将被重新编号。

编号发生时,引发事件的模型将被注入到方法中,并可用于进一步限制作用域。

检索到的模型将包含一个 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 文件。