ekvedaras/laravel-enum

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

Laravel integration for ekvedaras/php-enum

Maintainers

👁 ekvedaras

Package info

github.com/ekvedaras/laravel-enum

pkg:composer/ekvedaras/laravel-enum

Statistics

Installs: 24

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.2 2020-12-30 12:55 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT cc800e3b12369bcda3ea81d0b99738d2bd546143

phpenumlaravelenumerableekvedaras

This package is auto-updated.

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


README

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

👁 Image

👁 Twitter Follow

This package integrates ekvedaras/php-enum into Laravel by providing enum value casting in models which was introduced in Laravel 7.

Usage

PaymentStatus.php

use EKvedaras\LaravelEnum\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');
 }
}

Casting

Payment.php

use Illuminate\Database\Eloquent\Model;

class Payment extends Model
{
 protected $casts = [
 'status' => PaymentStatus::class,
 ];
}

Setting and retrieving status:

$payment = new Payment();

// It is advised to always set enum objects instead of strings for better usage analysis
$payment->status = PaymentStatus::pending();
// However, above works the same as this
$payment->status = 'pending';
// or this
$payment->status = PaymentStatus::pending()->id();

dump($payment->status === PaymentStatus::pending()); // true

$payment->status = 'invalid'; // throws OutOfBoundsException

Validation

A built in in validator can be used.

use Illuminate\Validation\Rule;

$rules = [
 'status' => Rule::in(PaymentStatus::keys())
];

// or

$rules = [
 'status' => 'in:' . PaymentStatus::keyString(),
];

Changelog

See changes in changelog files: