String IDs personalizados en modelos de Laravel: un nuevo enfoque

  • Publicado el 15 enero, 2025
  • Palabras: 42

¿Necesitas utilizar identificadores únicos personalizados en tus modelos de Laravel? El trait HasUniqueStringIds refactorizado proporciona una forma clara de implementar identificadores de cadena personalizados sin anular las consultas de enlace de ruta.

String IDs personalizados en modelos de Laravel: un nuevo enfoque

#Uso básico

Creat tu trait de id personalizado:

 

trait HasTwrnsTrait
{
    use HasUniqueStringIds;

    public function newUniqueId()
    {
        return (string) Twrn::new();
    }

    protected function isValidUniqueId($value): bool
    {
        return Twrn::isValid($value);
    }
}

 

#Ejemplo práctico

A continuación se explica cómo implementar identificadores personalizados en tu aplicación:

 

class CustomIdentifierService
{
    public static function generate(): string
    {
        return 'PRD-' . strtoupper(uniqid()) . '-' . rand(1000, 9999);
    }

    public static function isValid(string $value): bool
    {
        return preg_match('/^PRD-[A-Z0-9]+-d{4}$/', $value);
    }
}

trait HasCustomIdentifier
{
    use HasUniqueStringIds;

    public function newUniqueId(): string
    {
        return CustomIdentifierService::generate();
    }

    protected function isValidUniqueId($value): bool
    {
        return CustomIdentifierService::isValid($value);
    }
}

class Product extends Model
{
    use HasCustomIdentifier;

    protected $keyType = 'string';
    public $incrementing = false;
}

// Uso en routes
Route::get('/products/{product}', function (Product $product) {
    return $product;
});

// La URL del producto se mostrará como:
// /products/PRD-5F9E2B3A-1234

 

El trait HasUniqueStringIds facilita la implementación de identificadores de cadenas personalizados mientras se mantiene el elegante enlace del modelo de ruta de Laravel.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Artículos relacionados

Hilar fino en el manejo de entradas en Laravel: personalización de los middlewares TrimStrings y ConvertEmptyStringsToNull
132

Hilar fino en el manejo de entradas en Laravel: personalización de los middlewares TrimStrings y ConvertEmptyStringsToNull

Cómo potenciar el manejo de entradas de strings en Laravel con Stringable
107

Cómo potenciar el manejo de entradas de strings en Laravel con Stringable

Simplifica las comprobaciones de strings en Laravel con doesntContain
94

Simplifica las comprobaciones de strings en Laravel con doesntContain

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión