Enums en Laravel para Insert, Update y Where de forma nativa
Gracias a PHP 8.1 los Enums en Laravel para operaciones Insert, Update y Where ya son soportados de forma nativa desde la versión 8.7.0 del framework. Esto es así desde hace pocos días gracias a este PR.
Yo desde hace mucho tiempo utilizo un paquete para Laravel que cubre todas las necesidades cuando trabajamos con Laravel y necesitamos gestionar Enumerables. Una vez se publique la versión 8.1 de PHP a partir del 25 de noviembre de 2021 voy a empezar a utilizar los Enums en Laravel de forma nativa, pero mientras tanto, veamos que podremos hacer con esta maravillosa novedad de Laravel y PHP.
Crear Enums en PHP 8.1
Crear un Enum en PHP 8.1 es muy sencillo.
Si lo deseamos, podemos definir el tipo de dato, aunque actualmente sólo están soportados los tipos int|string.
Obtener todos los valores de un Enum
Si deseamos obtener todos los valores que contiene un Enum, podemos hacerlo gracias al método cases.
Utilizar Enums en Migraciones Laravel
Actualmente no está soportado de forma nativa en Laravel, pero es fácil. Nosotros normalmente utilizamos Enums para definir tipos de datos, roles, post type y similares. Ya que es una tarea repetitiva, lo mejor sería reutilizar dicha tarea en todos nuestros Enums ¡Gracias por existir Traits!
El Trait BaseEnum cumple con nuestras necesidades, retornará un array de valores ideal para nuestras migraciones, ahora sólo debemos aplicarlo a nuestros Enums.
Migración con Enums Nativos en Laravel
Vamos a crear una migración para una tabla de Posts utilizando nuestro Enum PostType y su método forMigration.
Si revisas tu esquema, deberías ver algo como lo siguiente:
Crear registros con Enums en Laravel
Crear nuevos Posts utilizando nuestro Enum PostType es tan sencillo como sigue:
Filtrar Posts por Enum en Laravel
De la misma forma, filtrar por la columna post_type es bien sencillo gracias a nuestro Enum: