Laravel Enum: Guia Completo para Utilizar Enums no Laravel

Laravel Enum: Guia Completo para Utilizar Enums no Laravel


Laravel Enum é uma funcionalidade poderosa que permite representar conjuntos fixos de valores de forma organizada e segura, substituindo o uso de strings soltas no código. Com a introdução dos Enums no PHP 8.1, o Laravel passou a oferecer suporte nativo para utilizar enums em models, validações, formulários e muito mais — tornando o desenvolvimento mais limpo, legível e livre de erros. Neste guia, você vai entender como aplicar Enums de forma prática no seu projeto Laravel e aproveitar todo o seu potencial.

O que são Enums no PHP e no Laravel?

Os Enums (Enumerações) foram introduzidos oficialmente no PHP 8.1 e permitem representar um conjunto fixo e limitado de valores nomeados.

No Laravel, os Enums ajudam a escrever código mais seguro, expressivo e autocompletável, reduzindo o uso de “magic strings” e melhorando a manutenção do sistema.


Por que usar Enums no Laravel?

Imagine um sistema com status de pedido. Em vez de usar strings soltas como ‘pending’, ‘paid’, ‘shipped’, podemos usar:

OrderStatus::PAID

Isso traz:

Tipagem forte

Validação automática

Autocompletar no editor de código

Legibilidade e padronização


Criando um Enum no Laravel

Use o comando Artisan se desejar gerar manualmente:

php artisan make:enum OrderStatus

Em seguida, crie o Enum em app/Enums/OrderStatus.php:

namespace App\Enums;

enum OrderStatus: string
{
    case PENDING = 'pending';
    case PAID = 'paid';
    case SHIPPED = 'shipped';
    case CANCELED = 'canceled';
}

Usando o Enum em um Model

Você pode usar Enums diretamente como valores de uma coluna no banco, por exemplo:

use App\Enums\OrderStatus;

$order = Order::create([
    'status' => OrderStatus::PAID,
]);

Para funcionar corretamente, é ideal configurar os casts no Model:

use App\Enums\OrderStatus;

class Order extends Model
{
    protected $casts = [
        'status' => OrderStatus::class,
    ];
}

Assim, o Laravel converterá automaticamente os valores salvos e recuperados do banco para o Enum OrderStatus.


Verificando e Comparando Enums

if ($order->status === OrderStatus::PAID) {
    // Pedido já foi pago
}

Listando Todos os Valores de um Enum

Para listar os valores possíveis:

OrderStatus::cases();

Você pode transformar isso em um array para dropdowns:

foreach (OrderStatus::cases() as $status) {
    echo $status->value; // 'paid'
    echo $status->name;  // 'PAID'
}

Convertendo Enum para Texto Amigável

Crie um método customizado dentro do Enum:

enum OrderStatus: string
{
    case PENDING = 'pending';
    case PAID = 'paid';
    case SHIPPED = 'shipped';
    case CANCELED = 'canceled';

    public function label(): string
    {
        return match($this) {
            self::PENDING => 'Pendente',
            self::PAID => 'Pago',
            self::SHIPPED => 'Enviado',
            self::CANCELED => 'Cancelado',
        };
    }
}

Uso:

echo $order->status->label(); // "Pago"

Validando Enum com Form Request

No FormRequest de uma rota:

use App\Enums\OrderStatus;
use Illuminate\Validation\Rules\Enum;

public function rules()
{
    return [
        'status' => ['required', new Enum(OrderStatus::class)],
    ];
}

Enum com Front-end (Vue, Blade, etc)

Para popular um select com todos os valores possíveis:

OrderStatus::cases(); // Retorna todos os valores

collect(OrderStatus::cases())->map(function ($status) {
    return [
        'label' => $status->label(),
        'value' => $status->value,
    ];
});

Usando Enums em Scopes ou Queries

Order::where('status', OrderStatus::PAID)->get();

Laravel Enum vs Spatie Laravel Enum

Se quiser recursos extras como:

  • Traduções
  • Métodos adicionais
  • Facilidade com Blade

Você pode usar o pacote Spatie Laravel Enum:

composer require spatie/enum

Mas em muitos casos, os Enums nativos do PHP 8.1 + Laravel já são mais que suficientes.


Estrutura Recomendada para Enums

Organize suas enums em:

app/
└── Enums/
    └── OrderStatus.php
    └── UserType.php
    └── PaymentMethod.php

Exemplos Comuns de Enums em Projetos Laravel

ContextoEnum
Status do PedidoOrderStatus::PAID
Tipo de UsuárioUserType::ADMIN
Forma de PagamentoPaymentMethod::PIX
Frequência de AssinaturaSubscriptionType::MONTHLY
Prioridade de TarefaTaskPriority::HIGH

Conclusão

Enums no Laravel são uma ferramenta poderosa para tornar o código mais limpo, seguro e compreensível.

Eles substituem strings soltas, melhoram a legibilidade e reduzem bugs.

Resumo de vantagens:

  • Tipagem forte
  • Validação simples
  • Código mais limpo e sem repetição
  • Fácil integração com front-end e bancos de dados

🔥 Construa seus projetos com a melhor infraestrutura e ainda apoie o DevsBrasil!

Na Hostinger, você encontra hospedagem rápida, segura e com suporte top de linha — ideal para desenvolvedores e empreendedores digitais.

💡 Use o nosso link exclusivo do DevsBrasil e garanta:

✅ Descontos especiais nos planos de hospedagem, e-mail profissional, VPS e criador de sites com IA

✅ Ferramentas otimizadas para performance, com ótimo custo-benefício

✅ Apoio direto à nossa comunidade e ao nosso conteúdo gratuito 💚

👉 Acesse agora com nosso link exclusivo e aproveite os benefícios!

Show 1 Comment

1 Comment

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *