Today we tagged a new major version of laravel-medialibrary. In case you're not familiar with this package here's a quick rundown of what it can do.

The package can associate all sorts of files with Eloquent models. It provides a simple, fluent API to work with. Here's a quick example:

$newsItem = News::find( 1 ); $newsItem->addMedia($pathToFile)->toCollection( 'images' );

Want to store some large files on another filesystem? No problem:

$newsItem->addMedia($smallFile)->toCollectionOnDisk( 'downloads' , 'local' ); $newsItem->addMedia($bigFile)->toCollectionOnDisk( 'downloads' , 's3' );

The package can also generate derived images such as thumbnails for images and pdf's. For this to work you have to prepare your model a bit:

use Illuminate \ Database \ Eloquent \ Model ; use Spatie \ MediaLibrary \ HasMedia \ Interfaces \ HasMediaConversions ; use Spatie \ MediaLibrary \ HasMedia \ HasMediaTrait ; class NewsItem extends Model implements HasMediaConversions { use HasMediaTrait ; public function registerMediaConversions () { $this ->addMediaConversion( 'thumb' ) ->setManipulations([ 'w' => 368 , 'h' => 232 ]) ->performOnCollections( 'images' ); } }

Once that's out the way you can to this to retrieve a thumbnail.

$newsItem->getMedia( 'images' )->first()->getUrl( 'thumb' );

If you're already using v3 of the package you'll notice that there hasn't changed much. Upgrading should be fairly painless. V4 is not a feature rich major version. The biggest changes are that Glide 1.0.0 is used behind the scenes to create thumbnails, and some internal functions were refactored.

Thanks to a lot of quality contributions from our users this is easily one of our best packages. If you like this one, take a look at the other ones we've previously made.