testmonitor/eloquent-incrementable

在您的 Eloquent 模型中定义一个自定义的自增字段,该字段通过 PHP 而不是数据库引擎来确定。

5.0.0 2023-04-09 15:23 UTC

This package is auto-updated.

Last update: 2024-09-15 09:38:54 UTC


README

Latest Stable Version StyleCI codecov License

在您的 Eloquent 模型中定义一个自定义的自增字段,该字段通过 PHP 而不是数据库引擎来确定。

此外,通过使用增量组,您可以根据其他字段重新启动表中的计数。考虑以下示例

想象一个存储每个错误跟踪应用程序在单个表中,但按项目表示的缺陷跟踪应用程序。您希望每个项目从新的错误计数开始,同时保持唯一的数据库 ID。Incrementable 将使您能够在定义新的 project_id 后自动重置 code 计数器。

目录

安装

此包可以通过 Composer 安装

$ composer require testmonitor/eloquent-incrementable

使用

为了将 Incrementable 添加到您的 Eloquent 模型,您需要

  1. 在您的模型(s)上使用 TestMonitor\Incrementable\Traits\Incrementable 特性。
  2. 配置可增量字段 (注意:确保它是一个整数字段)
  3. 可选地,添加一个或多个增量组。

将可增量特性添加到您想要跟踪的模型

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use TestMonitor\Incrementable\Traits\Incrementable;

class Bug extends Model
{
    use Incrementable, SoftDeletes;

    protected $table = 'bugs';

    protected $incrementable = 'code';

    // This will cause the code to reset once
    // a new project_id is found.
    protected $incrementableGroup = ['project_id'];
}

为了避免冲突,Incrementable 将保留软删除模型的计数。虽然这将在当前模型和下一个模型之间产生差距,但在模型恢复时将确保唯一性。

示例

在此示例中,我们已设置以下内容

  • 包含 namecode 字段的表。
  • 名为 App\Bug 的 Eloquent 模型,它使用 Incrementable 特性
  • Bug 模型上的一个属性: $incrementable = 'code'

现在我们可以运行此示例

$bug = new App\Bug(['name' => 'It doesn\'t work.']);
$bug->save();

// Will show '1'
echo $bug->code;

$bug = new App\Bug(['name' => 'It really doesn\'t work.']);
$bug->save();

// Will show '2'
echo $bug->code;

测试

此包包含集成测试。您可以使用 PHPUnit 运行它们。

$ vendor/bin/phpunit

变更日志

有关更多信息,请参阅 变更日志

贡献

有关贡献详情,请参阅 贡献指南

鸣谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证