Files
besttechfrom.eu/app/Models/Category.php
T

65 lines
1.4 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Str;
class Category extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'slug',
'description',
];
/**
* Get the products for the category.
*/
public function products(): HasMany
{
return $this->hasMany(Product::class);
}
/**
* Generate a unique slug for the category based on its name.
*/
public static function generateUniqueSlug(string $name, ?int $excludeId = null): string
{
$slug = Str::slug($name);
$originalSlug = $slug;
$count = 1;
// Keep appending numbers until we find a unique slug
$query = static::where('slug', $slug);
if ($excludeId) {
$query->where('id', '!=', $excludeId);
}
while ($query->exists()) {
$slug = $originalSlug . '-' . $count;
$count++;
$query = static::where('slug', $slug);
if ($excludeId) {
$query->where('id', '!=', $excludeId);
}
}
return $slug;
}
/**
* Get the route key for the model.
*/
public function getRouteKeyName(): string
{
return 'slug';
}
}