testmonitor / eloquent-incrementable
在您的 Eloquent 模型中定义一个自定义的自增字段,该字段通过 PHP 而不是数据库引擎来确定。
5.0.0
2023-04-09 15:23 UTC
Requires
- php: ^8.1
- illuminate/config: ^10.0
- illuminate/database: ^10.0
- illuminate/support: ^10.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.7
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^10.0
- scrutinizer/ocular: ^1.9
- squizlabs/php_codesniffer: ^3.6
README
在您的 Eloquent 模型中定义一个自定义的自增字段,该字段通过 PHP 而不是数据库引擎来确定。
此外,通过使用增量组,您可以根据其他字段重新启动表中的计数。考虑以下示例
想象一个存储每个错误跟踪应用程序在单个表中,但按项目表示的缺陷跟踪应用程序。您希望每个项目从新的错误计数开始,同时保持唯一的数据库 ID。Incrementable 将使您能够在定义新的 project_id
后自动重置 code
计数器。
目录
安装
此包可以通过 Composer 安装
$ composer require testmonitor/eloquent-incrementable
使用
为了将 Incrementable 添加到您的 Eloquent 模型,您需要
- 在您的模型(s)上使用
TestMonitor\Incrementable\Traits\Incrementable
特性。 - 配置可增量字段 (注意:确保它是一个整数字段)。
- 可选地,添加一个或多个增量组。
将可增量特性添加到您想要跟踪的模型
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 将保留软删除模型的计数。虽然这将在当前模型和下一个模型之间产生差距,但在模型恢复时将确保唯一性。
示例
在此示例中,我们已设置以下内容
- 包含
name
和code
字段的表。 - 名为
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)。有关更多信息,请参阅 许可证。