haakco / laravel-enum-generator
Generates simple class to act as an enum from a table specified in its con
Installs: 9 853
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 1
pkg:composer/haakco/laravel-enum-generator
Requires
- php: ^8.4
- archtechx/enums: >=1.1.2
- illuminate/console: ^12.0
- illuminate/database: ^12.0
- illuminate/support: ^12.0
Requires (Dev)
- brainmaestro/composer-git-hooks: ^3.0
- brianium/paratest: *
- ergebnis/composer-normalize: ^2.48
- mockery/mockery: ^1.6
- orchestra/testbench: ^10.6
- phpunit/phpunit: ^12.0
- roave/security-advisories: dev-latest
- symplify/coding-standard: >=13
- symplify/easy-coding-standard: >=12.6
- dev-master
- v6.0.1
- v6.0.0
- v5.1.1
- v5.1.0
- v5.0.2
- v5.0.1
- v4.0.16
- v4.0.15
- v4.0.14
- v4.0.8
- v4.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-dependabot/composer/symfony/process-7.4.5
- dev-dependabot/composer/psy/psysh-0.12.19
This package is auto-updated.
Last update: 2026-02-02 23:33:16 UTC
README
This is where your description should go. Take a look at contributing.md to see a to do list.
Installation
Via Composer
$ composer require haakco/laravel-enum-generator --dev
Configuration for local environment only
If you wish to enable generators only for your local environment, you should install it via composer using the --dev option like this:
composer require haakco/laravel-enum-generator --dev
Then you'll need to register the provider in app/Providers/AppServiceProvider.php file.
public function register() { if ($this->app->environment() == 'local') { $this->app->register(\HaakCo\LaravelEnumGenerator\LaravelEnumGeneratorServiceProvider::class); } }
Usage
Copy the config over
php artisan vendor:publish --provider="HaakCo\LaravelEnumGenerator\LaravelEnumGeneratorServiceProvider"
Edit the config file enum-generator.php to specify which tables to use to generate the files.
Now run the following to re-create your models.
php artisan modelEnum:create
Configuration
The config/enum-generator.php file supports the following options:
Global Options
| Option | Default | Description |
|---|---|---|
use-enum-format |
true |
Use PHP 8.1+ enum format (vs legacy class constants) |
default-leave-schema |
false |
Include schema name in generated class name |
default-uuid |
false |
Include UUID field in generated enums |
id-field |
'id' |
Default column name for enum values |
name-field |
'name' |
Default column name for enum case names |
default-prepend_class |
'' |
Prefix for generated class names |
default-prepend_name |
'' |
Prefix for generated enum case names |
enumPath |
app_path() . '/Models/Enums' |
Output directory for generated files |
default-order-by |
['name', 'id'] |
Default ordering for enum cases |
Per-Table Options
Each table in the tables array can have these options:
'tables' => [ 'public.statuses' => [ 'uuid' => false, 'leave-schema' => true, 'prepend-class' => 'App', 'prepend-name' => 'Status', 'id-field' => 'id', 'name-field' => 'name', 'order-by' => ['name' => 'asc'], 'where' => [ 'is_active' => true, 'type' => 'public', ], ], ],
Filtering Rows with where
Use the where option to filter which database rows become enum cases. This is useful when:
- You have duplicate values and need to filter by another column
- You only want active/enabled records
- You need to limit enums to a specific type or category
'tables' => [ // Only generate enums for active permissions 'permissions' => [ 'where' => [ 'is_active' => true, ], ], // Only generate enums where type equals 'system' 'categories' => [ 'where' => [ 'type' => 'system', 'deleted_at' => null, ], ], ],
The where option accepts an associative array where keys are column names and values are matched with equality (=). Multiple conditions are combined with AND.
Change log
Please see the changelog for more information on what has changed recently.
Testing
$ composer test
Contributing
Please see contributing.md for details and a todolist.
Security
If you discover any security related issues, please email tim@haak.co instead of using the issue tracker.
Credits
License
mit. Please see the license file for more information.