hippieua/laravel-sortablev2

用于Laravel模型排序的Trait

v1.0.1 2024-06-13 13:54 UTC

This package is auto-updated.

Last update: 2024-09-13 19:43:15 UTC


README

Latest Stable Version Total Downloads License

Laravel Sortable v2 是一个Laravel包,旨在轻松为Eloquent模型添加排序行为。此包允许您通过简单添加Trait来管理数据库记录的顺序。

功能

  • 可排序Trait:在您的Eloquent模型中包含一个Trait以启用排序功能。
  • 自动排序管理:在创建时自动管理排序字段,并提供移动记录上下文的方法。
  • 关系支持:处理父关系上下文中的排序,非常适合嵌套资源或分组项。

安装

要安装此包,请在您的Laravel项目中运行以下命令

composer require hippieua/laravel-sortablev2

用法

设置

  1. 创建迁移以向您的模型添加可排序字段
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++]));
}
  1. 在您的模型中包含Trait
namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Hippieua\Sortable2\Sortable2;

class Chapter extends Model
{
    use Sortable2;
}
  1. 定义可排序字段和可选关系

如果您需要自定义可排序字段或特定关系进行排序,请覆盖模型中的方法

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许可证