PHPackages                             rawnoq/laravel-enum - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. rawnoq/laravel-enum

ActiveLibrary[Database &amp; ORM](/categories/database)

rawnoq/laravel-enum
===================

A comprehensive Laravel package for working with PHP Enums, providing casting, validation, translation, query scopes, and more

1.0.0(5mo ago)040MITPHPPHP ^8.2CI failing

Since Nov 29Pushed 5mo agoCompare

[ Source](https://github.com/rawnoq/laravel-enum)[ Packagist](https://packagist.org/packages/rawnoq/laravel-enum)[ RSS](/packages/rawnoq-laravel-enum/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (6)Versions (2)Used By (0)

Rawnoq Laravel Enum
===================

[](#rawnoq-laravel-enum)

[![Latest Version](https://camo.githubusercontent.com/b5af19c871420dda9947aa22ab0f30c26792d027fd930d2083db7ed11515b5b5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f7261776e6f712f6c61726176656c2d656e756d3f7374796c653d666c61742d737175617265)](https://github.com/rawnoq/laravel-enum/releases)[![License](https://camo.githubusercontent.com/bb798df0534d9fec8dbbcdc0475cea860907eb3ab680fec4646ca86148c9c46d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f7261776e6f712f6c61726176656c2d656e756d3f7374796c653d666c61742d737175617265)](LICENSE)[![PHP Version](https://camo.githubusercontent.com/2feedae8f28d540231cf84b4bcc4d2cd2e49ad7202167311d44cbcf8dcf0f950/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f7261776e6f712f6c61726176656c2d656e756d3f7374796c653d666c61742d737175617265)](https://packagist.org/packages/rawnoq/laravel-enum)

A comprehensive Laravel package for working with PHP Enums, providing casting, validation, translation, query scopes, and more.

Features
--------

[](#features)

- ✅ **Enum Helpers**: Useful methods for working with enums (`values()`, `names()`, `random()`, `fromValue()`, etc.)
- ✅ **Eloquent Casting**: Automatic enum casting in Eloquent models
- ✅ **Validation Rules**: Built-in validation rules for enum values
- ✅ **Translation Support**: Easy translation of enum labels
- ✅ **Query Scopes**: Helper scopes for filtering by enum values
- ✅ **Type Safety**: Full type safety with PHP 8.2+ backed enums

Installation
------------

[](#installation)

```
composer require rawnoq/laravel-enum
```

Configuration
-------------

[](#configuration)

Publish the config file:

```
php artisan vendor:publish --tag=enum-config
```

Usage
-----

[](#usage)

### Basic Enum with Helpers

[](#basic-enum-with-helpers)

```
use Rawnoq\Enum\Concerns\HasEnumHelpers;

enum UserStatus: string
{
    use HasEnumHelpers;

    case Active = 'active';
    case Inactive = 'inactive';
    case Pending = 'pending';
}

// Get all values
UserStatus::values(); // ['active', 'inactive', 'pending']

// Get random case
UserStatus::random(); // UserStatus::Active (random)

// Get by value
UserStatus::fromValue('active'); // UserStatus::Active

// Check if value exists
UserStatus::hasValue('active'); // true

// Get as array
UserStatus::toArray(); // ['active' => 'Active', 'inactive' => 'Inactive', ...]
```

### Eloquent Model Casting

[](#eloquent-model-casting)

```
use Rawnoq\Enum\Casts\EnumCast;

class User extends Model
{
    protected $casts = [
        'status' => EnumCast::class.':'.UserStatus::class,
    ];
}

// Usage
$user = User::find(1);
$user->status; // UserStatus::Active (enum instance)
$user->status = UserStatus::Inactive; // Automatically casts to 'inactive'
```

### Validation

[](#validation)

```
use Rawnoq\Enum\Rules\EnumRule;

$request->validate([
    'status' => ['required', new EnumRule(UserStatus::class)],
]);
```

### Translation Support

[](#translation-support)

```
use Rawnoq\Enum\Concerns\HasEnumTranslation;

enum UserStatus: string
{
    use HasEnumTranslation;

    case Active = 'active';
    case Inactive = 'inactive';
}

// In your language file (lang/en/enums.php):
return [
    'user_status' => [
        'active' => 'Active',
        'inactive' => 'Inactive',
    ],
];

// Usage
UserStatus::Active->label(); // 'Active'
UserStatus::labels(); // ['active' => 'Active', 'inactive' => 'Inactive']
```

### Query Scopes

[](#query-scopes)

```
use Rawnoq\Enum\Concerns\HasEnumScopes;

class User extends Model
{
    use HasEnumScopes;
}

// Usage
User::whereEnum('status', UserStatus::Active)->get();
User::whereEnumIn('status', [UserStatus::Active, UserStatus::Pending])->get();
User::whereEnumNotIn('status', [UserStatus::Inactive])->get();
```

### Helper Facade

[](#helper-facade)

```
use Rawnoq\Enum\Facades\Enum;

Enum::isValid(UserStatus::class, 'active'); // true
Enum::fromValueOr(UserStatus::class, 'active', UserStatus::Pending); // UserStatus::Active
Enum::valuesAsString(UserStatus::class); // 'active, inactive, pending'
```

Advanced Usage
--------------

[](#advanced-usage)

### Combining Multiple Traits

[](#combining-multiple-traits)

```
use Rawnoq\Enum\Concerns\HasEnumHelpers;
use Rawnoq\Enum\Concerns\HasEnumTranslation;

enum UserStatus: string
{
    use HasEnumHelpers, HasEnumTranslation;

    case Active = 'active';
    case Inactive = 'inactive';
    case Pending = 'pending';
}
```

### Custom Translation Namespace

[](#custom-translation-namespace)

```
enum UserStatus: string
{
    use HasEnumTranslation;

    case Active = 'active';

    public static function translationNamespace(): string
    {
        return 'custom.namespace';
    }
}
```

### Filtering and Mapping

[](#filtering-and-mapping)

```
// Filter enum cases
$activeCases = UserStatus::filter(fn($case) => $case->value !== 'inactive');

// Map enum cases
$labels = UserStatus::map(fn($case) => $case->label());
```

API Reference
-------------

[](#api-reference)

### HasEnumHelpers Methods

[](#hasenumhelpers-methods)

- `values()` - Get all enum values
- `names()` - Get all enum names
- `fromValue($value)` - Get enum by value (nullable)
- `fromValueOrFail($value)` - Get enum by value (throws exception)
- `random()` - Get random enum case
- `toArray()` - Convert to associative array
- `options()` - Get options for select/dropdown
- `hasValue($value)` - Check if value exists
- `hasName($name)` - Check if name exists
- `first()` - Get first enum case
- `last()` - Get last enum case
- `filter($callback)` - Filter enum cases
- `map($callback)` - Map enum cases

### HasEnumTranslation Methods

[](#hasenumtranslation-methods)

- `label()` - Get translated label for current case
- `labelFor($locale)` - Get translated label for specific locale
- `labels()` - Get all translated labels
- `labelsFor($locale)` - Get all translated labels for locale
- `translationKey($case)` - Get translation key for case
- `translationNamespace()` - Get translation namespace
- `translationKeyFormat()` - Get translation key format

### HasEnumScopes Methods (for Models)

[](#hasenumscopes-methods-for-models)

- `whereEnum($column, $value)` - Filter by enum value
- `whereEnumIn($column, $values)` - Filter by multiple enum values
- `whereEnumNotIn($column, $values)` - Exclude enum values

Contributing
------------

[](#contributing)

Contributions are welcome! Please feel free to submit a Pull Request.

License
-------

[](#license)

MIT

###  Health Score

36

—

LowBetter than 81% of packages

Maintenance76

Regular maintenance activity

Popularity8

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

161d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/fef8f5b623783c112ea9b179c610918e020a18fe0e921a48dc45c351cb7b5115?d=identicon)[HassanHassanKerdash](/maintainers/HassanHassanKerdash)

---

Tags

laravelvalidationenumtranslationeloquentcastingphp82backed-enumquery-scopes

###  Code Quality

TestsPHPUnit

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/rawnoq-laravel-enum/health.svg)

```
[![Health](https://phpackages.com/badges/rawnoq-laravel-enum/health.svg)](https://phpackages.com/packages/rawnoq-laravel-enum)
```

###  Alternatives

[watson/validating

Eloquent model validating trait.

9723.3M46](/packages/watson-validating)[tucker-eric/eloquentfilter

An Eloquent way to filter Eloquent Models

1.8k4.8M26](/packages/tucker-eric-eloquentfilter)[esensi/model

The base model traits of Esensi

20266.5k1](/packages/esensi-model)[cybercog/laravel-love

Make Laravel Eloquent models reactable with any type of emotions in a minutes!

1.2k302.7k1](/packages/cybercog-laravel-love)[cviebrock/eloquent-taggable

Easy ability to tag your Eloquent models in Laravel.

567694.8k3](/packages/cviebrock-eloquent-taggable)[wendelladriel/laravel-lift

Take your Eloquent Models to the next level

70046.8k](/packages/wendelladriel-laravel-lift)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
