lartisan / laravel-sortable-medialibrary
Associate files with Eloquent models and add Sortable behaviour
Package info
github.com/lartisan/laravel-sortable-medialibrary
pkg:composer/lartisan/laravel-sortable-medialibrary
Requires
- php: ^7.4|^8.0
- ext-exif: *
- ext-fileinfo: *
- ext-json: *
- illuminate/bus: ^7.0|^8.0
- illuminate/console: ^7.0|^8.0
- illuminate/database: ^7.0|^8.0
- illuminate/pipeline: ^7.0|^8.0
- illuminate/support: ^7.0|^8.0
- league/flysystem: ^1.0.64
- maennchen/zipstream-php: ^1.0|^2.0
- spatie/image: ^1.4.0
- spatie/temporary-directory: ^1.1
- symfony/console: ^4.4|^5.0
Requires (Dev)
- ext-pdo_sqlite: *
- ext-zip: *
- aws/aws-sdk-php: ^3.133.11
- doctrine/dbal: ^2.5.2
- guzzlehttp/guzzle: ^6.3|^7.0
- league/flysystem-aws-s3-v3: ^1.0.23
- mockery/mockery: ^1.3
- orchestra/testbench: ^5.0|^6.0
- phpunit/phpunit: ^9.1
- spatie/pdf-to-image: ^2.0
- spatie/phpunit-snapshot-assertions: ^4.0
Suggests
- league/flysystem-aws-s3-v3: Required to use AWS S3 file storage
- php-ffmpeg/php-ffmpeg: Required for generating video thumbnails
- spatie/pdf-to-image: Required for generating thumbsnails of PDFs and SVGs
Conflicts
- php-ffmpeg/php-ffmpeg: <0.6.1
This package is auto-updated.
Last update: 2026-05-16 04:41:01 UTC
README
Changes to the original package
This forked package eliminates the IsSorted Trait from Spatie\MediaLibrary\MediaCollections\Models\Media, so the sorting/ordering part could be made by spatie/eloquent-sortable.
I have also added the spatie/eloquent-sortable as a dependency.
Installation
This package uses "spatie/eloquent-sortable": "^3.11" together with "spatie/laravel-medialibrary": "^9.0.0" and it can be installed through Composer:
composer require lartisan/laravel-sortable-medialibrary
In Laravel 5.5 and above the service provider will automatically get registered. In older versions of the framework just add the service provider in config/app.php file:
'providers' => [ ... Spatie\MediaLibrary\MediaLibraryServiceProvider::class, Spatie\EloquentSortable\EloquentSortableServiceProvider::class, ];
Optionally you can publish the config files with:
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations" php artisan vendor:publish --provider="Spatie\EloquentSortable\EloquentSortableServiceProvider" --tag="config"
Usage
To add the intended Eloquent sortable behaviour to your custom Media 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. - Optionally, if your model/table has a grouping field, you can create a
buildSortQuerymethod at your model.
Example:
... use Spatie\EloquentSortable\Sortable; use Spatie\EloquentSortable\SortableTrait; use Spatie\MediaLibrary\MediaCollections\Models\Media as BaseMedia; class MyCustomMedia extends BaseMedia implements Sortable { use SortableTrait; /** * Define the column used for sorting * @var array */ public $sortable = [ 'order_column_name' => 'order_column', 'sort_when_creating' => true, ]; /** * @return Builder */ public function buildSortQuery(): Builder { return static::query() ->where('collection_name', $this->collection_name); } ... }
To add the default sort of the original package behaviour to your custom Media model
You could still use the default IsSorted behaviour of the original package by adding the Spatie\MediaLibrary\MediaCollections\Models\Concerns\IsSorted to your model.
Example:
... use Spatie\MediaLibrary\MediaCollections\Models\Concerns\IsSorted; use Spatie\MediaLibrary\MediaCollections\Models\Media as BaseMedia; class MyCustomMedia extends BaseMedia { use IsSorted; }
Documentation
The original spatie/laravel-medialibrary package.
The spatie/eloquent-sortable package.
License
The MIT License (MIT). Please see License File for more information.