Cast Model Attributes to Backed Enums in Eloquent

Punyapal Shah
Define PHP Backed Enums on model $casts to automatically hydrate strings and integers into typed Enums.

Storing status strings like 'active' or 'pending' as raw strings leads to typos. Defining Backed Enums inside model $casts makes sure typed enum object hydration.

namespace App\Models;

use App\Enums\PostStatus;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected function casts(): array
    {
        return [
            'status' => PostStatus::class,
        ];
    }
}
  • Automatically casts database scalar values into typed Backed Enum objects
  • Provides full type safety and IDE auto-completion on model attributes
  • Throws ValueError when database contains unmapped enum scalar values
Tags: #Laravel #Eloquent #Enums
Share on X

// Found an issue or want to contribute a tip? github.com/MrPunyapal/tips