ctrlwebinc / nova-order-field
A Laravel Nova field.
2.1.0
2022-01-17 09:16 UTC
Requires
- php: >=7.1.0
- laravel/nova: ^2.0|^3.0
- spatie/eloquent-sortable: ^3.4|^4.0
README
Description
A field that adds reordering functionality to your Laravel Nova resource's index using the eloquent-sortable package by Spatie.
Installation
This package can be installed through Composer.
composer require ctrlwebinc/nova-order-field
Usage
- Follow the usage instructions on the eloquent-sortable repository to make your model sortable.
- Add the
Ctrlweb\NovaOrderField\Orderable
trait to your Nova Resource. - Add a public static property called
$defaultOrderField
to your resource, containing your order column. - Add the
OrderField
to your Nova Resourcefields
method.
Grouping
If your model/table has a grouping field (usually a foreign key): id,
user_id
, title, order_column
and you'd like the above methods to take it into considerations, you can create a buildSortQuery
method at your model:
public function buildSortQuery() { return static::query()->where('user_id', $this->user_id); }
This will restrict the calculations to fields value of the model instance.
Example
use Ctrlweb\NovaOrderField\Orderable; use Ctrlweb\NovaOrderField\OrderField; class Page extends Resource { use Orderable; public static $defaultOrderField = 'order'; public function fields(Request $request) { return [ OrderField::make('Order'), ]; } }