DEV Community

Cover image for How to generate PHP enums from database in Laravel?
Richard Dobroň
Richard Dobroň

Posted on Edited on

How to generate PHP enums from database in Laravel?

A magic number is a configuration parameter typed as a number in the middle of some code.

And that magic number is a bad thing.

Using this library, you will fix the following code:

To such:

How to use this generator?

First of all, install composer package:



composer require dobron/laravel-db-enum-generator


Enter fullscreen mode Exit fullscreen mode

Let's say the user_roles database table has the following structure:

Id Slug Role
1 MANAGER Admin
2 CONTENT_CREATOR Editor
3 MODERATOR Moderator
4 ADVERTISER Advertiser
5 INSIGHTS_ANALYST Analyst

Now call artisan command make:enum.



# with laravel model
php artisan make:enum UserRoleTypes --model=UserRole --id=Id --slug=Slug --title=Role

# with laravel model that does not have slug column (will be auto-generated from --title)
php artisan make:enum UserRoleTypes --model=UserRole --id=Id --title=Role

# with database table
php artisan make:enum UserRoleTypes --table=user_roles --id=Id --slug=Slug --title=Role

# etc.


Enter fullscreen mode Exit fullscreen mode

The UserRoleTypes.php file was generated in the ./app/enums/ directory.
If you update the database table, just use the same command with the --force flag to overwrite the file.

How to find magic numbers in the project?

I recommend using a library called PHPMND.

This stands for PHP Magic Number Detector.

A detailed installation guide can be found at https://github.com/povils/phpmnd

But if you're using Composer, here's how you can install it quickly:



composer require --dev povils/phpmnd


Enter fullscreen mode Exit fullscreen mode

Once that's done, you run it like this:



phpmnd .


Enter fullscreen mode Exit fullscreen mode

Top comments (0)