Description
Sortable behaviour for Eloquent models
To add sortable behaviour to your model you must:
- Implement the
Spatie\EloquentSortable\Sortableinterface. - Use the trait
Spatie\EloquentSortable\SortableTrait. - Optionally specify which column will be used as the order column. The default is
order_column.
Example
use Spatie\EloquentSortable\Sortable;use Spatie\EloquentSortable\SortableTrait; class MyModel extends Model implements Sortable{ use SortableTrait; public $sortable = [ 'order_column_name' => 'order_column', 'sort_when_creating' => true, ]; // ...}
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;
Assuming that the db-table for MyModel is empty:
$myModel = new MyModel();$myModel->save(); // order_column for this record will be set to 1 $myModel = new MyModel();$myModel->save(); // order_column for this record will be set to 2 $myModel = new MyModel();$myModel->save(); // order_column for this record will be set to 3 //the trait also provides the ordered query scope$orderedRecords = MyModel::ordered()->get();
Recent Courses on Laravel Daily
[NEW] Marketing for Developers in 2026
7 lessons
52 min
AI Agents/IDEs for Laravel: May 2026 (Claude Code, Codex, OpenCode, etc)
7 lessons
52 min
Testing in Laravel 13 For Beginners
26 lessons
1 h 41 min read