How To Create Unique Slug In Laravel 9

Websolutionstuff | Sep-27-2022 | Categories : Laravel

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

 


You might also like :

Recommended Post
Featured Post
How To Add Watermark On Image In Laravel 10
How To Add Watermark On Image...

In this article, we will how to add a watermark to an image in laravel 10. Here we will learn about laravel 10 adding a...

Read More

Mar-31-2023

Laravel 10 Create AJAX Pagination Example
Laravel 10 Create AJAX Paginat...

In this article, we will see laravel 10 create an ajax pagination example. Here, we will learn about how to create...

Read More

Apr-17-2023

How to Handle Exception in PHP with Example
How to Handle Exception in PHP...

Hey there, Ever found yourself scratching your head over unexpected errors in your PHP code? Fret not, because today, we...

Read More

Dec-15-2023

Fixed: Class "DOMDocument" Not Found In Laravel
Fixed: Class "DOMDocument" Not...

In this article, we will see to fixed class "DOMDocument" not found in laravel. Also, class 'domdocum...

Read More

Feb-17-2023