A Laravel package to generate unique slugs, UIDs, and sequence numbers.
areia-lab/slug-uid is a Laravel package for a laravel package to generate unique slugs, uids, and sequence numbers..
It currently has 0 GitHub stars and 10 downloads on Packagist (latest version v1.1.2).
Install it with composer require areia-lab/slug-uid.
Discover more Laravel packages by areia-lab
or browse all Laravel packages to compare alternatives.
Last updated
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
composer require areia-lab/slug-uid
php artisan vendor:publish --provider="AreiaLab\SlugUid\SlugUidServiceProvider" --tag=sluguid-config
'slug' => [
'separator' => '-',
'max_length' => 150,
'source_columns' => ['title','name'],
'regen_on_update' => true,
]
'uid' => [
'prefix' => 'UID',
'length' => 16,
'driver' => 'uuid4',
]
'sequence' => [
'prefix' => 'ORD',
'padding' => 5,
'column' => 'post_sequence',
'scoped' => true,
'separator' => '-',
]
// 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);
SlugUid::slug('Hello World');
SlugUid::uniqueSlug($post);
SlugUid::uid('USR');
SlugUid::uniqueUid(Post::class, 'USR');
SlugUid::sequence(Post::class, 'INV');
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'];
}
return SlugUid::slug('Hello World');
// Output: hello-world
return SlugUid::uniqueSlug(Post::class, 'Hello World');
// Output: hello-world
// Output if slug exists: hello-world-1
return SlugUid::uid('prefix');
// Output: prefix-65e1d5ff5201a7
return SlugUid::uniqueUid(Post::class, 'prefix');
// Output: prefix-xxxxxxxxxxxxxx (unique)
return SlugUid::sequence(Post::class, 'PST');
// Output: PST-0001
return SlugUid::sequence(Post::class, 'INV', 4);
// Output: INV-0001
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.'
]);
return Post::create([
'title' => 'hello world',
'description' => 'This is a test post.'
]);
$post = Post::first();
$post->update([
'title' => 'My First Post Updated',
'description' => 'This is a test post desc.'
]);
return $post;
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... |
MIT License © Areia Lab 2025