Download the PHP package quadrubo/eloquent-autosort without Composer
On this page you can find all versions of the php package quadrubo/eloquent-autosort. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download quadrubo/eloquent-autosort
More information about quadrubo/eloquent-autosort
Files in quadrubo/eloquent-autosort
Package eloquent-autosort
Short Description This is my package eloquent-autosort
License MIT
Homepage https://github.com/quadrubo/eloquent-autosort
Informations about the package eloquent-autosort
Eloquent Autosort
This package provides sortable behaviour for Eloquent models using a trait.
The package is based on spatie/eloquent-sortable. See here why this is not merged.
Features
- Automatic sorting on create
- Automatic sorting on update
- Automatic sorting on delete
- Grouping with unlimited Columns
Installation
This package can be installed through Composer.
You can publish the config file with:
This is the content of the file that will be published in config/eloquent-autosort.php
Usage
To add sortable behaviour to your model you must:
- Implement the
Quadrubo\EloquentAutosort\Sortable
interface. - Use the trait
Quadrubo\EloquentAutosort\SortableTrait
.
Example
If you don't set a value $sortable['order_column_name']
the package will assume that your order column name will be named order_column
.
If you don't set a value $sortable['sort_when_creating']
the package will automatically assign the highest order number to a new model.
If you don't set a value $sortable['sort_when_updating']
the package will automatically repair the order on update.
If you don't set a value $sortable['sort_when_deleting']
the package will automatically repair the order on delete.
If you don't set a value $sortable['groups']
groups will not be used.
Assuming that the db-table for MyModel
is empty:
You can set a new order for all the records using the setNewOrder
-method
Optionally you can pass the starting order number as the second argument.
To sort using a column other than the primary key, use the setNewOrderByCustomColumn
-method.
As with setNewOrder
, setNewOrderByCustomColumn
will also accept an optional starting order argument.
You can also move a model up or down with these methods:
You can also move a model to the first or last position:
You can also move a model to a specific or the new position:
You can determine whether an element is first or last in order:
You can swap the order of two models:
Grouping
If your model/table has one or multiple grouping fields (usually a foreign key): id,
user_id
, title, order_column
and you'd like the package to take it into considerations, you cann add the grouping fields to the $sortable['groups']
array.
This will restrict the calculations to the fields in the array.
Replacing the groups functionality
If you don't like the way the groups functionality is implemented, you can easily make your own.
- Overwrite the
buildSortQuery
method to change the behaviour of how the query is build. - Overwrite the
hasChangedGroupAttributes
method to provide a way for the package to know when it should resort.
Testing
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
- Quadrubo
- All Contributors
Thanks to the Spatie/Eloquent-Sortable Team for the base package functionality!
License
The MIT License (MIT). Please see License File for more information.
All versions of eloquent-autosort with dependencies
spatie/laravel-package-tools Version ^1.14.0
illuminate/contracts Version ^9.0|^10.0