← BACK
Laravel / Eloquent

Cast Model Attributes to Backed Enums in Eloquent

Punyapal Shah • • 1 min read
edit this tip →

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

Related Tips

View all tips →

// Got a tip in mind? Contributions are always welcome