Налаштовувані референсні номери для ваших моделей за допомогою Referenceable

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 10 вересня, 2025
Проблема генерації унікальних номерів посилань може стати досить складною, але пакет Referenceable для Laravel допоможе вам легко з цим впоратися. Позбавтеся хаосу в цьому процесі та дізнайтеся, як налаштувати професійні номери замовлень, рахунків та коди для відстеження всього за кілька рядків конфігурації. Читайте далі!

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

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

# Основні можливості

# Приклад

Припустимо, у нас є система, що дозволяє користувачам подавати запити на статусні листи в університеті. Ми можемо створити міграцію, що міститиме стовпець для зберігання нашого референсного номера:

Schema::create('status_letters', function (Blueprint $table) {
    $table->id();
    $table->string('reference_number')->unique()->index();
    // інші стовпці для наших статусних листів...
    $table->timestamps();
});

Далі створимо модель та вкажемо, як ми хочемо генерувати наші референсні номери:

use MohamedSaid\Referenceable\Traits\HasReference;

class StatusLetter extends Model
{
    use HasReference;

    protected $referenceColumn = 'reference_number';
    protected $referenceStrategy = 'template';
    protected $referenceTemplate = [
        'format' => '{PREFIX}-{YEAR}{MONTH}{SEQ}',
        'sequence_length' => 4,
    ];
    protected $referencePrefix = 'STL';
    // Генерує: STL-2025090001, STL-2025090002...
}

Замість стратегії template можна також використовувати стратегію random:

protected $referenceStrategy = 'random';
protected $referencePrefix = 'STL';
protected $referenceLength = 6;
protected $referenceCase = 'upper';

// Генерує: STL-A12BC3

Або використати стратегію sequential:

protected $referenceStrategy = 'sequential';
protected $referencePrefix = 'STL';
protected $referenceSequential = [
    'start' => 1000,
    'min_digits' => 4,
    'reset_frequency' => 'monthly', // ніколи, щоденно, щомісяця, щорічно
];

// Генерує: STL-001000, STL-001001, STL-001002...

Налаштування референсів також можна виконувати глобально у config/referenceable.php, без прив'язки до кожної моделі.

Referenceable пропонує численні методи та області видимості моделей. Ось кілька з них:

// Ручна генерація без збереження
$reference = $statusLetter->generateReference();

// Перевірка наявності референсу в моделі
if ($statusLetter->hasReference()) {
    echo "Номер референсу: " . $statusLetter->reference;
}

// Знайти елемент за його референсним номером
$statusLetter = StatusLetter::findByReference('STL-2025090001');

// Знайти референси, що починаються з префікса
$lettersThisMonth = StatusLetter::referenceStartsWith('STL-202509')->get();

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

Спробуйте цей пакет, встановивши його через Composer та виконавши команду установки:

composer require eg-mohamed/referenceable
php artisan referenceable:install

Дізнайтеся більше про цей пакет і перегляньте вихідний код на GitHub.

Популярні

Logomark Logotype

Як задокументувати кілька API в Laravel за допомогою Scramble

Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше

Logomark Logotype

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

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

Logomark Logotype

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!