A field that adds reordering functionality to your Laravel Nova resource's index using the eloquent-sortable package by Spatie.
This package can be installed through Composer.
composer require jeffersonsimaogoncalves/nova-order-field
- Follow the usage instructions on the eloquent-sortable repository to make your model sortable.
- Add the
MichielKempen\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.
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.
use MichielKempen\NovaOrderField\Orderable;
use MichielKempen\NovaOrderField\OrderField;
class Page extends Resource
{
use Orderable;
public static $defaultOrderField = 'order';
public function fields(Request $request)
{
return [
OrderField::make('Order'),
];
}
}