https://github.com/ekvedaras/doctrine-enum
🔠Doctrine integration of ekvedaras/php-enum package
https://github.com/ekvedaras/doctrine-enum
doctrine doctrine-enum enum php php-enum
Last synced: about 1 year ago
JSON representation
🔠Doctrine integration of ekvedaras/php-enum package
- Host: GitHub
- URL: https://github.com/ekvedaras/doctrine-enum
- Owner: ekvedaras
- License: mit
- Created: 2020-12-30T09:45:13.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2020-12-30T14:15:50.000Z (about 5 years ago)
- Last Synced: 2025-01-11T08:14:46.565Z (about 1 year ago)
- Topics: doctrine, doctrine-enum, enum, php, php-enum
- Language: PHP
- Homepage:
- Size: 7.81 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Doctrine Enum

[](https://app.codecov.io/gh/ekvedaras/doctrine-enum)
[](LICENSE)
[](https://packagist.org/packages/ekvedaras/doctrine-enum)
[](https://packagist.org/packages/ekvedaras/doctrine-enum)


This package integrates [ekvedaras/php-enum](https://github.com/ekvedaras/php-enum)
into Doctrine by
providing [custom enum mapping type](https://www.doctrine-project.org/projects/doctrine-orm/en/latest/cookbook/custom-mapping-types.html#custom-mapping-types).
## Usage
**PaymentStatus.php**
```php
namespace App\Enums;
use EKvedaras\Doctrine\Enum;
class PaymentStatus extends Enum
{
/**
* @return static
*/
final public static function pending(): self
{
return static::get('pending', 'Payment is pending');
}
/**
* @return static
*/
final public static function completed(): self
{
return static::get('completed', 'Payment has been processed');
}
/**
* @return static
*/
final public static function failed(): self
{
return static::get('failed', 'Payment has failed');
}
}
```
**UserStatus.php**
```php
namespace App\Enums;
use EKvedaras\Doctrine\Enum;
class UserStatus extends Enum
{
/**
* @return static
*/
final public static function active(): self
{
return static::get(1, 'User is active');
}
/**
* @return static
*/
final public static function banned(): self
{
return static::get(2, 'User is banned');
}
/**
* @return static
*/
final public static function deactivated(): self
{
return static::get(3, 'User account is deactivated');
}
}
```
### Casting
**Payment.php**
```php
use App\Enums\PaymentStatus;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity()
* @ORM\Table(name="payments")
*/
class Payment
{
// ...
/**
* @var PaymentStatus
*
* @ORM\Column(type=PaymentStatus::class)
*/
protected $status;
// ...
}
```
**User.php**
```php
use App\Enums\UserStatus;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity()
* @ORM\Table(name="users")
*/
class User
{
// ...
/**
* @var UserStatus
*
* @ORM\Column(type="user-status")
*/
protected $status;
// ...
}
```
Registering enum:
```php
use App\Enums\PaymentStatus;
use App\Enums\UserStatus;
use EKvedaras\DoctrineEnum\EnumType;
// As class name
EnumType::register(PaymentStatus::class);
EnumType::register('user-status', UserStatus::class);
// Or multiple at once
EnumType::register([
PaymentStatus::class,
'user-status' => UserStatus::class,
]);
```