LaravelPackages.net
Acme Inc.
Toggle sidebar
gorankrgovic/laravel-shortable

Laravel package for creating Youtube-like short IDs.

232
3
v1.0.1
About gorankrgovic/laravel-shortable

gorankrgovic/laravel-shortable is a Laravel package for laravel package for creating youtube-like short ids.. It currently has 3 GitHub stars and 232 downloads on Packagist (latest version v1.0.1). Install it with composer require gorankrgovic/laravel-shortable. Discover more Laravel packages by gorankrgovic or browse all Laravel packages to compare alternatives.

Last updated

Laravel Eloquent Shortable

Easy creation of short random unique ID's like Youtube ones (i.e. watch?v=e3H73n7U) for your Eloquent models in Laravel/Lumen.

Installation

Install the package via Composer:

composer require gorankrgovic/laravel-shortable

The package will automatically register its service provider.

Optionally, publish the configuration file if you want to change any defaults:

php artisan vendor:publish --provider="Gorankrgovic\LaravelShortable\ServiceProvider"

Updating your Eloquent Models

Your models should use the Shortable trait, which has an abstract method shortable() that you need to define. This is where any model-specific configuration is set (see Configuration below for details):


use Gorankrgovic\LaravelShortable\Shortable;

class Video extends Model
{
    use Shortable;

    /**
     * Return the shortable configuration array for this model.
     *
     * @return array
     */
    public function shortable()
    {
        return [
            'short_url'
        ];
    }
}

If you want more than one field, you can just add more to array.

Of course, your model and database will need a column in which to store the short ID. You will need to add the column manually via your own migration.

That's it ... your model is now "shortable"!

Usage

Saving a model is easy:


$video = new Video([
    'whateve' => 'My Awesome Video',
]);

$video->save();

And so is retrieving the shortable:

$video->short_url;

Or whatever you have called it.

The ShortService Class

All the logic to generate slugs is handled by the \Gorankrgovic\LaravelShortable\Services\ShortService class.

Generally, you don't need to access this class directly, although there is one static method that can be used to generate a short without actually creating or saving an associated model.

use Gorankrgovic\LaravelShortable\Services\ShortService;

$short = ShortService::createShort(Post::class, 'column_name');

This would be useful for testing the package.

You can also pass an optional array of configuration values as the fourth argument.

Events

Package will fire two Eloquent model events: "shorting" and "shorted".

You can hook into either of these events just like any other Eloquent model event:


Post::registerModelEvent('shorting', function($post) {
    if ($post->someCondition()) {
        // the model won't be shorted
        return false;
    }
});

Post::registerModelEvent('shorted', function($post) {
    Log::info('Post shorted: ' . $post->getShort());
});

Additional trait

Adding the optional ShortableScopeHelpers trait to your model allows you to work with models and their id's. For example:

$post = Post::whereShort($shortString)->get();

$post = Post::findByShort($shortString);

$post = Post::findByShortOrFail($shortString);

Because models can have more than one short id, this requires a bit more configuration.

Star History Chart