How To Create Unique Slug In Laravel 9

Websolutionstuff
2 min readNov 15, 2022

--

In this article, we will see how to create a unique slug in laravel 9. A slug is the part of a URL that identifies a particular page on a website in an easy-to-read form.

A slug can be very powerful for keyword SEO. A good slug can improve a user’s experience if it clearly states what the webpage is about. So, we will generate a unique slug in laravel 9.

In this example, we will create a slug based on the title. For example, if the user enters a title like the laravel 9 slug generator example then the slug can be automatically created or generated like the laravel-9-slug-generator-example.

Also, you can create a slug using the laravel Str::slug() helper function and slug() method.

So, let’s see laravel 9 create a unique slug or create a unique slug in PHP.

app/Models/Post.php

<?php

namespace App\Models;
use Illuminate\Support\Str;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Post extends Model
{
use HasFactory;
protected $fillable = [
'title', 'detail', 'slug'
];
/**
* Boot the model.
*/
protected static function boot()
{
parent::boot();
static::created(function ($post) {
$post->slug = $post->createSlug($post->title);
$post->save();
});
}
/**
* create slug
*
* @return response()
*/
private function createSlug($title)
{
if (static::whereSlug($slug = Str::slug($title))->exists()) {
$max = static::whereTitle($title)->latest('id')->skip(1)->value('slug');
if (is_numeric($max[-1])) {
return preg_replace_callback('/(\d+)$/', function ($mathces) {
return $mathces[1] + 1;
}, $max);
}
return "{$slug}-2";
}
return $slug;
}
}

app/Http/Controllers/PostController

<?php

namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
/**
* create a new post
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$post = Post::create([
"title" => "Laravel Slug Create"
]);
dd($post);
}
}

Output:

laravel-slug-create
laravel-slug-create-1
laravel-slug-create-2

Create Slug using Str::slug()

The Str::slug method generates a URL friendly "slug" from the given string.

use Illuminate\Support\Str;

$slug = Str::slug('Laravel 9 Slug Helper Function', '-');

Output:

laravel-9-slug-helper-function

Generate Slug using slug() Method

The slug method generates a URL friendly "slug" from the given string.

use Illuminate\Support\Str;

$slug = Str::of('Laravel 9 Slug Method Example')->slug('-');

Output:

laravel-9-slug-method-example

If this post was helpful, please click the clap 👏 button below. A few times to show your support!

--

--

Websolutionstuff
Websolutionstuff

Written by Websolutionstuff

I am Laravel and PHP Developer. I have also Good Knowledge of JavaScript, jQuery, Bootstrap and REST API. Visit Website: http://websolutionstuff.com/

No responses yet