areia-lab/slug-uid 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

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

areia-lab/slug-uid

Composer 安装命令:

composer require areia-lab/slug-uid

包简介

A Laravel package to generate unique slugs, UIDs, and sequence numbers.

README 文档

README

SlugUid is a Laravel package to automatically generate slugs, unique identifiers (UIDs), and sequence numbers for your models. It supports configuration, facades, traits, and artisan commands.

📖 Documentation: Complete Guide to Slug-UID

Requirements

  • PHP >= 8.0
  • Laravel >= 9.0
  • Composer

Installation

composer require areia-lab/slug-uid

Publish the configuration:

php artisan vendor:publish --provider="AreiaLab\SlugUid\SlugUidServiceProvider" --tag=sluguid-config

Configuration

Slug Settings

'slug' => [
    'separator' => '-',
    'max_length' => 150,
    'source_columns' => ['title','name'],
    'regen_on_update' => true,
]

UID Settings

'uid' => [
    'prefix' => 'UID',
    'length' => 16,
    'driver' => 'uuid4',
]

Sequence Settings

'sequence' => [
    'prefix' => 'ORD',
    'padding' => 5,
    'column' => 'post_sequence',
    'scoped'  => true,
    'separator' => '-',
]

Usage

Basic usage with the Facade:

// Generate slug
SlugUid::slug('Hello World');

// Unique slug for model
SlugUid::uniqueSlug(Post::class, 'Hello World');

// Generate UID
SlugUid::uid();
SlugUid::uniqueUid(Post::class, 'USR');

// Sequence
SlugUid::sequence(Post::class, 'ORD', 4);

Facade Methods

SlugUid::slug('Hello World');
SlugUid::uniqueSlug($post);
SlugUid::uid('USR');
SlugUid::uniqueUid(Post::class, 'USR');
SlugUid::sequence(Post::class, 'INV');

Traits

Instead of a single trait, you can use dedicated traits for slug, uid, and sequence:

<?php

namespace App\Models;

use AreiaLab\SlugUid\Traits\HasSequence;
use AreiaLab\SlugUid\Traits\HasSlug;
use AreiaLab\SlugUid\Traits\HasUid;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use HasSlug, HasUid, HasSequence;

    public $slug_column = 'slug';
    public $slug_source = 'title';

    public $uid_column = 'uid';
    public $uid_prefix = 'POST';

    public $sequence_column = 'post_sequence';
    public $sequence_prefix = 'PST';
    public $sequence_padding = 4;
    public $sequence_scoped = true;
    public $sequence_separator = '-';

    protected $fillable = ['title', 'slug', 'uid', 'post_sequence', 'description'];
}

Features

  • Customizable slug sources
  • Automatic regeneration on update
  • Hash-based UID generators
  • Scoped sequence numbers per model type
  • Artisan regen command
  • Facade + Trait support
  • Publishable configuration

Examples

Generate a basic slug

return SlugUid::slug('Hello World');
// Output: hello-world

Generate a unique slug for a model

return SlugUid::uniqueSlug(Post::class, 'Hello World');
// Output: hello-world
// Output if slug exists: hello-world-1

Generate a UID with prefix

return SlugUid::uid('prefix');
// Output: prefix-65e1d5ff5201a7

Generate a unique UID for a model

return SlugUid::uniqueUid(Post::class, 'prefix');
// Output: prefix-xxxxxxxxxxxxxx (unique)

Generate a sequence number for a model

return SlugUid::sequence(Post::class, 'PST');
// Output: PST-0001

return SlugUid::sequence(Post::class, 'INV', 4);
// Output: INV-0001

Generate slug, UID, and sequence from model creation

return Post::create([
    'title' => 'hello world',
    'slug' => SlugUid::uniqueSlug(Post::class, 'hello world'),
    'uid' => SlugUid::uniqueUid(Post::class, 'post'),
    'post_sequence' => SlugUid::sequence(Post::class),
    'description' => 'This is a test post.'
]);

Create a model using only model configuration

return Post::create([
    'title' => 'hello world',
    'description' => 'This is a test post.'
]);

Update model details

$post = Post::first();
$post->update([
    'title' => 'My First Post Updated',
    'description' => 'This is a test post desc.'
]);
return $post;

Artisan Commands

php artisan sluguid:regen App\Models\Post

🔹 Example

Suppose your posts table looks like this:

id title slug uid
1 Hello World NULL NULL
2 Laravel Command old-slug abc123

After running:

php artisan sluguid:regen "App\Models\Post"

It will regenerate values, maybe like this:

id title slug uid
1 Hello World hello-world 7f93a2...
2 Laravel Command laravel-command c8d8ff...

License

MIT License © Areia Lab 2025

areia-lab/slug-uid 适用场景与选型建议

areia-lab/slug-uid 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 10 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 08 月 29 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「generator」 「slug」 「laravel」 「sequence」 「UID」 「unique」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 areia-lab/slug-uid 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 areia-lab/slug-uid 我们能提供哪些服务?
定制开发 / 二次开发

基于 areia-lab/slug-uid 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-08-29