Унікальність у Laravel

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

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

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

# Приклади

use WillVincent\LaravelUnique\HasUniqueNames;
 
class Team extends Model
{
    use HasUniqueNames;
 
    // Необов'язково: перевизначення налаштувань за замовчуванням
    protected $uniqueField = 'team_name'; // Поле, яке потрібно зберігати унікальним (за замовчуванням: 'name')
    protected $constraintFields = ['team_id']; // Область унікальності (за замовчуванням: [])
    protected $uniqueSuffixFormat = '-{n}'; // Формат суфікса (за замовчуванням: ' ({n})')
}

Якщо наше team_name дорівнює "LNFC" і team_id дорівнює 1, тоді вихідні дані будуть такими:

Output: "LNFC" (якщо унікально)
Output: "LNFC-1" (якщо "LNFC" вже існує)
Output: "LNFC-2" (якщо "LNFC" та "LNFC-1" вже існують)

Ви також можете створити кастомний генератор, додавши метод до своєї моделі:

protected $uniqueValueGenerator = 'generateUniqueTeamName';
 
public function generateUniqueTeamName(string $base, array $constraints, ?int $attempt): string
{
    return $base . '-' . \Str::random(5);
}
Output: "LNFC-L2avJ" (випадковий суфікс з 5 символів)

Встановіть пакет через Composer:

composer require willvincent/laravel-unique

Якщо потрібно налаштувати значення за замовчуванням, ви можете опублікувати конфігураційний файл (необов'язково):

php artisan vendor:publish --tag="laravel-unique-config"

Примітка: Цей пакет гарантує унікальність на рівні програми. Для забезпечення цілісності даних, особливо в умовах високої конкуренції, рекомендується додати унікальні обмеження на рівні бази даних (наприклад, унікальні індекси) разом із цим трейт.

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

Популярні

Logomark Logotype

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

Logomark Logotype

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

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

Logomark Logotype

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

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