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:
- Product name
- Product name - 2
- Product name - 3
- Product name -4
Hope it wil help
Thanks!
Comments (0)
Your Comment