Wed Apr 2021 1 year ago

Contoh Generate Slug Unique di Laravel

Halo,

Dalam tutorial ini kita akan membahas demonstrasi laravel generate slug unique. Artikel ini membahas lebih rinci tentang laravel membuat contoh slug unique. Saya ingin berbagi dengan Anda laravel generate slug sebelum menyimpan. saya ingin berbagi dengan Anda bagaimana membuat slug unique di laravel.

Anda dapat dengan mudah membuat slug unique di versi laravel 6, laravel 7 dan laravel 8.

Terkadang kami perlu membuat slug dari judul dengan aplikasi Anda. tetapi Anda juga perlu membuat slug unique di atas table itu. mungkin user akan memasukkan judul yang sama maka secara otomatis akan menghasilkan slug unique. saya akan memberi Anda contoh sederhana langkah demi langkah bagaimana menghasilkan slug unique di laravel menggunakan model eloquent.

Mari kita lihat langkah demi langkah untuk membuat slug unique di contoh laravel:

app/Model/Product.php

<?php

  
namespace App\Models;

  
use Illuminate\Database\Eloquent\Factories\HasFactory;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Support\Str;

  
class Product extends Model

{

    use HasFactory;

  
    protected $fillable = [

        'title', 'detail', 'slug'

    ];

  
    /**

     * Boot the model.

     */

    protected static function boot()

    {

        parent::boot();

  
        static::created(function ($product) {

            $product->slug = $product->createSlug($product->title);
            $product->save();
        });
    }
  
    /** ** 
     * Write code on Method* Write code on Method
     **
     * @return response()* @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) {(\d+)$/', function ($mathces) {
                    return $mathces[1] + 1;
                }, $max);
            }
  
            return "{$slug}-2";
        }
  
        return $slug;
    }
}

Controller Code:

<?phpphp
  
namespace App\Http\Controllers; App\Http\Controllers;
  
use App\Models\Product; App\Models\Product;
use Illuminate\Http\Request; Illuminate\Http\Request;
  
class ProductController extends Controller ProductController extends Controller
{
    /**/**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $product = Product::create([
            "title" => "Laravel 8 Image Upload"
        ]);
        dd($product);
    }
}

sekarang jika Anda membuat beberapa kali record title yang sama maka itu akan membuat slug seperti di bawah ini:

laravel-8-gambar-upload
laravel-8-image-upload-2
laravel-8-image-upload-3
laravel-8-image-upload-4

sekarang Anda dapat mencobanya dan memeriksanya.

Saya harap ini dapat membantu Anda...

slug laravel laravel