Впровадження власних строкових ідентифікаторів у моделях Laravel

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 березня, 2025
У статті розглядається, як Laravel спрощує впровадження унікальних рядкових ідентифікаторів у ваших моделях за допомогою рефакторизованого трейту HasUniqueStringIds. Досліджуючи цей підхід, ви дізнаєтеся, як зберегти маршрутизацію та створити індивідуальні формати ідентифікаторів у вашому додатку. Чи готові ви вдосконалити свої моделі в Laravel? Читайте далі

Laravel спрощує впровадження настроюваних рядкових ідентифікаторів у ваших моделях за допомогою доопрацьованого HasUniqueStringIds трейту. Цей підхід зберігає можливості маршрутизації фреймворка, водночас дозволяючи використовувати кастомізовані формати ідентифікаторів.

Базове впровадження передбачає створення власного трейту:

trait HasSecureIdentifiers
{
    use HasUniqueStringIds;

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

    protected function isValidUniqueId($value): bool
    {
        return SecureId::validate($value);
    }
}

Ця схема дозволяє гнучко впроваджувати рішення у різних моделях:

class InvoiceIdentifierService
{
    public static function createIdentifier(): string
    {
        $prefix = config('app.env') === 'production' ? 'INV' : 'TEST';
        $timestamp = now()->format('Ymd');
        $random = strtoupper(Str::random(6));

        return "{$prefix}-{$timestamp}-{$random}";
    }

    public static function validateFormat(string $id): bool
    {
        $pattern = '/^(INV|TEST)-\d{8}-[A-Z0-9]{6}$/';
        return preg_match($pattern, $id) === 1;
    }
}

trait HasInvoiceIdentifier
{
    use HasUniqueStringIds;

    public function newUniqueId(): string
    {
        return InvoiceIdentifierService::createIdentifier();
    }

    protected function isValidUniqueId($value): bool
    {
        return InvoiceIdentifierService::validateFormat($value);
    }
}

class Invoice extends Model
{
    use HasInvoiceIdentifier;

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

Трейти HasUniqueStringIds гармонійно поєднуються з маршрутизацією Laravel, що дозволяє зберігати читабельні та зручні URL без втрати функціональності

Популярні

Logomark Logotype

4 поширені помилки Vite у Laravel

Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку

Logomark Logotype

Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом