hippieua / laravel-sortablev2
用于Laravel模型排序的Trait
v1.0.1
2024-06-13 13:54 UTC
Requires
- php: >=8.0
- illuminate/database: ^9|^10|^11
README
Laravel Sortable v2 是一个Laravel包,旨在轻松为Eloquent模型添加排序行为。此包允许您通过简单添加Trait来管理数据库记录的顺序。
功能
- 可排序Trait:在您的Eloquent模型中包含一个Trait以启用排序功能。
- 自动排序管理:在创建时自动管理排序字段,并提供移动记录上下文的方法。
- 关系支持:处理父关系上下文中的排序,非常适合嵌套资源或分组项。
安装
要安装此包,请在您的Laravel项目中运行以下命令
composer require hippieua/laravel-sortablev2
用法
设置
- 创建迁移以向您的模型添加可排序字段
php artisan make:migration "Add order_id to Categories"
public function up(): void { Schema::table('categories', function (Blueprint $table) { $table->unsignedBigInteger('order_id')->default(0)->after('id'); }); Category::orderBy('id')->each(fn($category, $index) => $category->update(['order_id' => $index++])); }
- 在您的模型中包含Trait
namespace App\Models; use Illuminate\Database\Eloquent\Model; use Hippieua\Sortable2\Sortable2; class Chapter extends Model { use Sortable2; }
- 定义可排序字段和可选关系
如果您需要自定义可排序字段或特定关系进行排序,请覆盖模型中的方法
protected function getSortableField(): string { return 'custom_order_field'; // Default is 'order_id' } protected function getSortableRelation(): ?BelongsTo { return $this->belongsTo(ParentModel::class); // Default is null }
管理排序
- 将条目向上移动
$chapter = Chapter::find(1); $chapter->moveUp();
- 将条目向下移动
$chapter = Chapter::find(1); $chapter->moveDown();
事件
该包挂钩到多个Eloquent模型事件,以确保数据完整性
创建中
保存中
更新中
删除中
检索中
- 如果使用SoftDeletes,则条件性
恢复
。
要求
- PHP >= 8.0
- Laravel 9.x 到 11.x
贡献
欢迎贡献,任何问题或拉取请求都应提交到GitHub仓库。
许可证
Laravel Sortable v2 包是开源软件,许可协议为MIT许可证。