Rutorika Sortable 使用教程
1、项目介绍
Rutorika Sortable 是一个为 Laravel Eloquent 模型添加排序功能的扩展包。它支持单表排序、分组排序以及多对多关系排序。通过简单的配置和使用,可以轻松实现模型数据的排序管理。
2、项目快速启动
安装
首先,通过 Composer 安装 Rutorika Sortable:
composer require rutorika/sortable
配置
在 config/app.php
中添加服务提供者:
'providers' => [
// 其他服务提供者
Rutorika\Sortable\SortableServiceProvider::class,
],
发布配置文件:
php artisan vendor:publish
在 config/sortable.php
中配置需要排序的模型:
'entities' => [
'articles' => \App\Article::class,
// 其他模型
],
路由
添加排序路由到控制器:
Route::post('sort', '\Rutorika\Sortable\SortableController@sort');
使用
在需要排序的模型中使用 SortableTrait
:
use Rutorika\Sortable\SortableTrait;
class Article extends Model
{
use SortableTrait;
}
3、应用案例和最佳实践
单表排序
假设有一个 Article
模型,需要对其进行排序:
class Article extends Model
{
use SortableTrait;
}
在前端通过 AJAX 请求排序:
$.ajax({
url: '/sort',
method: 'POST',
data: {
type: 'articles',
order: [3, 1, 2] // 新的排序顺序
}
});
分组排序
如果需要按某个字段分组排序,例如按 category_id
分组:
class Article extends Model
{
use SortableTrait;
protected static $sortableGroupField = 'category_id';
}
多对多关系排序
假设有一个 Post
模型和 Tag
模型,需要对每个 Post
的 Tag
进行排序:
class Post extends Model
{
use SortableTrait;
public function tags()
{
return $this->belongsToMany(Tag::class)->withPivot('position');
}
}
在 config/sortable.php
中配置多对多关系:
'entities' => [
'posts' => [
'entity' => \App\Post::class,
'relation' => 'tags'
],
],
4、典型生态项目
Rutorika Sortable 可以与其他 Laravel 扩展包结合使用,例如:
- Laravel Admin: 在后台管理系统中集成排序功能。
- Voyager: 在 Voyager 后台中使用排序功能管理数据。
- Laravel Backpack: 在 Backpack 中实现自定义排序功能。
通过这些生态项目的结合,可以进一步提升 Laravel 应用的开发效率和用户体验。