ekvedaras/doctrine-enum

This package is abandoned and no longer maintained. No replacement package was suggested.

Doctrine integration for ekvedaras/php-enum

Maintainers

👁 ekvedaras

Package info

github.com/ekvedaras/doctrine-enum

pkg:composer/ekvedaras/doctrine-enum

Statistics

Installs: 11

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2020-12-30 14:12 UTC

Requires

Requires (Dev)

Suggests

Provides

None

Conflicts

None

Replaces

None

MIT 850a553c1dfb2e0b36ecb8410593c3a7ae07fe66

phpdoctrineenumenumerableekvedaras

This package is auto-updated.

Last update: 2025-04-22 06:45:24 UTC


README

👁 Tests
👁 Code Coverage
👁 Software License
👁 Latest Version on Packagist
👁 Total Downloads

👁 Image

👁 Twitter Follow

This package integrates ekvedaras/php-enum into Doctrine by providing custom enum mapping type.

Usage

PaymentStatus.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

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

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

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:

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,
]);