mpyw / laravel-unique-violation-detector
Detect primary/unique key or constraint violation errors from PDOException.
Installs: 56 292
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: ^8.0
- ext-pdo: *
- illuminate/contracts: ^9.0 || ^10.0 || ^11.0
- illuminate/database: ^9.0 || ^10.0 || ^11.0
- illuminate/support: ^9.0 || ^10.0 || ^11.0
- mpyw/unique-violation-detector: ^1.0
Requires (Dev)
- orchestra/testbench: *
- orchestra/testbench-core: >=7.0
- phpunit/phpunit: >=9.5
README
Caution
ABANDONED: The functionalities of this library have been integrated into the Laravel core due to changes in Laravel v10.20.0. From now on, the Illuminate\Database\UniqueConstraintViolationException
exception class will be thrown when there is a unique constraint violation, so there is no need to use this library for judgment. Simply checking with catch
or instanceof
should be sufficient. Although the internal judgment logic is strictly different in some parts, it should be replaceable without any problems in most cases.
Detect primary/unique key or constraint violation errors from PDOException
.
Requirements
Package | Version |
---|---|
PHP | ^8.0 |
Laravel | ^9.0 || ^10.0 |
mpyw/unique-violation-detector | ^1.0 |
Supported Connections
Database | Connection Class |
---|---|
MySQL | Illuminate\Database\MySqlConnection |
PostgreSQL | Illuminate\Database\PostgresConnection |
SQLite | Illuminate\Database\SQLiteConnection |
SQLServer | Illuminate\Database\SqlServerConnection |
You can also add custom resolvers by one of the following:
Mpyw\LaravelUniqueViolationDetector\Facades\Unique::resolverFor()
Mpyw\LaravelUniqueViolationDetector\DetectorDiscoverer::resolverFor()
Installing
composer require mpyw/laravel-unique-violation-detector
Usage
You can detect unique violations in various ways.
use Mpyw\LaravelUniqueViolationDetector\UniqueViolationDetector; use Mpyw\LaravelUniqueViolationDetector\Facades\Unique; // Detect on a specific connection via explicitly created detector instance // (Recommended usage in libraries) $violated = (new UniqueViolationDetector($connection))->violated($e); // Detect on the default connection $violated = Unique::violated($exception); // Detect on a specific connection via Facade $violated = Unique::forConnection($connection)->violated($e);