Image not found

Product name auto increment when exists

Comment (0)

Admin

222


To increment the last number if it exists in the product name when handling duplicates in Laravel's model events, you can modify the logic like this:

App\Models\Product

 

 

use App\Models\Product;

protected static function booted()
{
    static::creating(function ($product) {
        $originalName = $product->product_name;

        // Initialize variables
        $baseName = $originalName;
        $lastNumber = 2; // Default to 2 if no number found

        // Extract the base name and last number from the name, if any
        if (preg_match('/^(.*)-(\d+)$/', $originalName, $matches)) {
            $baseName = $matches[1];
            $lastNumber = intval($matches[2]);
        }

        // Generate a new name by incrementing the last number
        $newName = $baseName . '-' . $lastNumber;

        // Check if the new name already exists
        $count = Product::where('product_name', $newName)->count();
        while ($count > 0) {
            // If the new name exists, increment the number and check again
            $lastNumber++;
            $newName = $baseName . '-' . $lastNumber;
            $count = Product::where('product_name', $newName)->count();
        }

        // Set the product's name to the unique name
        $product->product_name = $newName;
    });
}

 

 

Example: 

  1. Product name
  2. Product name - 2
  3. Product name - 3
  4. Product name -4

 

Hope it wil help

Thanks! 


Others Problem Fix Stroy



Comments (0)

Your Comment