定制 hippieua/laravel-sortable 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

hippieua/laravel-sortable

最新稳定版本:1.0.1

Composer 安装命令:

composer require hippieua/laravel-sortable

包简介

Trait to sort order in Laravel model

README 文档

README

Latest Version on Packagist Total Downloads

This package allows you to sort order of your Laravel model records with easy methods:

$model->moveUp();
$model->moveDown();
$model->move('up');
$model->move('down');

Installation

To install the most recent version, run the following command.

composer require hippieua/laravel-sortable

Setup

Your model should contain sortable field. You can add new or use existing one (don't use default id field)

Schema::table('comments', function (Blueprint $table) {
    $table->unsignedInteger('order')->default(1);
});

Update you model, use Sortable trait and fill $sortable_field property according to field name you've added.

    use Hippie\Sortable\Sortable;
    
    class Comment extends Model
    {
        use Sortable;
        
        protected string $sortable_field = 'order';
        
        protected $fillable = [
            'order',
        ];
    }

If your model have BelongsTo relationship, and you want to move records up and down within your relation items fill $sortable_relation property.

use Hippie\Sortable\Sortable;

class Comment extends Model
{
    use Sortable;
    
    protected string $sortable_field = 'order';
    protected string $sortable_relation = 'post';
    
    protected $fillable = [
        'order',
    ];
    
    public function post(): BelongsTo
    {
        return $this->belongsTo(Post::class);
    }
class Post extends Model
{
    public function comments(): BelongsTo
    {
        return $this->hasMany(Comment::class)->orderBy('order'); 
    }    
}

In case you don't want to calculate your sortable field value on creating new item manually add static::created to your sortable model

protected static function booted()
{
    static::created(function ($model) {
        $model->updateSortOrderOnCreate();
    });
}

Usage

Add new item

$comment = $post->comments()->create([
    'text' => $request->text,
])

$comment->order value will be set to $post->comments->count() + 1

Sort existing items

$post->comments()->first()->moveDown()

will set order field value for the first comment to 2 and set order field value for second item to 1;

Available methods

$comment->moveUp();
$comment->moveDown();
$comment->move('up');
$comment->move('down');

Info

Tested on Laravel 8 and 9 versions

Credits

License

The MIT License (MIT). Please see License File for more information.

统计信息

  • 总下载量: 135
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-06-26

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固