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.
Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!
Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!
Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше