larsjanssen6/increment-decrement

Simple ways of incrementing/decrementing and sorting rows
47 4
Install
composer require larsjanssen6/increment-decrement
Latest Version:v2.0
PHP:^7.0
License:MIT
Last Updated:Jul 26, 2017
Links: GitHub  ·  Packagist
Maintainer: larsjanssen

Laravel 5.4 sorting rows like a boss

Software License StyleCI Scrutinizer Code Quality Build Status

This Laravel >=5.4 package allows you to sort your rows very easy. You can play with the rows in a lot of ways.

Example:

demo

Once installed you can do the following:

Order::increment($model);
Order::decrement($model);
Order::toFirst($model);
Order::toLast($model);
Order::toMiddle($model);
Order::delete($model);
Order::switchModels($model1, $model2);
Order::switchIndexes($model, $index1, $index2);

The model (table) you want to sort needs a sort column. You can specifiy your column in the increment-decrement located in config/increment-decrement.php. Here you can set a

order_column_name

The default order_column_name is obviously order.

Install

You can install the package via composer:

$ composer require larsjanssen6/increment-decrement

This service provider must be installed.

// config/app.php
'providers' => [
    ...
    LarsJanssen\IncrementDecrement\IncrementDecrementServiceProvider::class,
];

This package has a facade. Add it to the aliases array:

// config/app.php
'aliases' => [
    ...
    'Order' => LarsJanssen\IncrementDecrement\OrderFacade::class,
]

You can publish the config-file with:

php artisan vendor:publish --provider="LarsJanssen\IncrementDecrement\IncrementDecrementServiceProvider" --tag="config"

This is the contents of the published config file:

return [
	'order_column_name' => 'order',

	"first_one_can_increment" => true,

	"last_one_can_decrement" => true
];

Usage

First add an integer column to the table (migration) you want to sort. Then migrate again. Specify the column you have added in the config file config/increment-dicrement in order_column_name.

Then you can use the Order facade almost everywhere.

Example:

Make a migration with a column that's going to sort:

public function up()
{
    Schema::create('forum', function (Blueprint $table) {
	    $table->increments('id');
	    $table->string('name');
	    $table->integer('order');
    });
}

Add the column to the config file:

'order_column_name' => 'order',

Then in my ForumController.php:

use Order; 

public function increment(Forum $forum)
{
    Order::increment($forum);
}

.....

The first_one_can_increment and last_one_can_decrement can be set in the config file to determine if the last and first row can increment/decrement.

Do not forget to increment the order column (or what you have specified in the config file) when you create a new record. For example:

return Forum::create([
    'name'          => $request->name,
    'description'   => $request->description,
    'order'         => Forum::all()->max('order') + 1
]);

Result in my own project:

demo

Require

Laravel 5.4 >=

Php 7.0 >=

Testing

You can run the tests with:

vendor/bin/phpunit

Contribute

I would love to hear your ideas to improve my code style and conventions. Feel free to contribute.

License

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

Related Packages

testmonitor/eloquent-incrementable

Define a custom auto-increment field in your Eloquent model, that is determined...

32,573 8
andhikamaheva/date

A date library to help you work with dates in different languages

13 1
vlados/laravel-blade-crawler-detect

Boost Lighthouse and PageSpeed scores by hiding cookie banners, chat widgets and...

5,439 0
maystro/filament-popup-modal

A comprehensive modal dialog system for FilamentPHP with progress bars, callback...

7 1