定制 gorankrgovic/laravel-shortable 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

gorankrgovic/laravel-shortable

Composer 安装命令:

composer require gorankrgovic/laravel-shortable

包简介

Laravel package for creating Youtube-like short IDs.

README 文档

README

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.

统计信息

  • 总下载量: 232
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-12-22

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固