Laravel Eloquent Sequencer
此包允许您为 Eloquent 模型创建和管理序列。
安装
通过 composer 安装此包:
composer require gurgentil/laravel-eloquent-sequencer配置
要发布配置文件,请运行:
php artisan vendor:publish --provider="Gurgentil\LaravelEloquentSequencer\LaravelEloquentSequencerServiceProvider"配置参数
您可以在 config/eloquentsequencer.php 中更改默认列名、初始值和排序策略:
return [
'column_name' => 'position',
'initial_value' => 1,
'strategy' => 'always',
];strategy 配置决定了何时触发排序,接受以下值之一:always、on_create、on_update 或 never。
模型配置
$sequenceable 属性指定模型的排序列名称:
protected static $sequenceable = 'order';将序列项分组在一起的关系键:
protected static $sequenceableKeys = [
'task_list_id',
];在上面的例子中,一个任务列表包含许多任务。
对于多态关系,请指定两个关系键:
protected static $sequenceableKeys = [
'commentable_id',
'commentable_type',
];使用方法
在下面的示例中,任务列表可能包含许多任务。
`` php
use Gurgentil\LaravelEloquentSequencer\Traits\Sequenceable;
use Illuminate\Database\Eloquent\Model;
class Task extends Model { use Sequenceable;
protected $fillable = [ 'position', ]; protected static $sequenceableKeys = [ 'task_list_id', ];
public function taskList() { return $this->belongsTo(TaskList::class); } }
创建一个对象
php
Task::create([
'position' => 1,
'task_list_id' => 1,
]);
如果未为 sequence 属性提供值,则对象将被放置在序列的末尾。php
Task::create(['task_list_id' => 1]);
更新和删除对象
序列中的其他项目将被重新排列以保持序列一致性。
php
$task->update(['position' => 4]);
php
$task->delete();
获取对象的序列值
php
$value = $task->getSequenceValue();
获取序列列名称
php
$columnName = Task::getSequenceColumnName();
禁用自动排序
php
$task->withoutSequencing()->update(['position' => 3]);
php
$task->withoutSequencing()->delete();
范围查询按序列值排序结果
php
$tasks = Task::sequenced()->get();
bash php artisan sequence:populate \\App\\TasknullArtisan 命令
为所有其值设置为
的记录分配序列值。
刷新一个模型的所有序列值。
bash
php artisan sequence:flush \\App\\Task
测试
bash
composer test
``
更新日志
请参阅 CHANGELOG 了解最近的更新内容。
贡献
详情请参阅 CONTRIBUTING。
安全
如果您发现任何安全相关的问题,请发送电子邮件至 gustavorgentil@outlook.com,切勿使用问题跟踪器。
致谢
许可证
MIT 许可证 (MIT)。更多信息请参阅 许可证文件。
Laravel 包模板
本包使用 Laravel Package Boilerplate 生成。
--- Tranlated By Open Ai Tx | Last indexed: 2026-01-05 ---