Tipos de campos en Laravel 12: boolean, enum, string y más
Tipos de campos en Laravel 12: boolean, enum, string y más
Cuando definimos una base de datos en Laravel 12 usando migraciones, debemos elegir el tipo de campo correcto para cada columna. Esto garantiza consistencia, evita errores y hace que el código sea más legible.
En este tutorial revisaremos los tipos de campos más usados en Laravel/MySQL:
- boolean
- boolean nullable
- tinyInteger
- enum
- string
- text
- integer
1. Boolean
Se usa cuando el valor solo puede ser true o false. En MySQL, Laravel lo traduce a TINYINT(1).
$table->boolean('activo')->default(true);
Ejemplo: indicar si un usuario está activo.
2. Boolean nullable
Permite tres estados: true, false y null (no definido aún).
$table->boolean('verificado')->nullable();
Ejemplo: validación pendiente de un correo.
3. TinyInteger
Se usa para almacenar números pequeños (0-255 si es unsigned). Ideal para estados codificados con números.
$table->tinyInteger('estado')->default(0);
// 0 = pendiente, 1 = aprobado, 2 = rechazado
4. Enum
Restringe los valores posibles a una lista definida.
$table->enum('perfilcoincide', ['iniciar', 'si', 'no'])->default('iniciar');
Ejemplo: definir si un lead coincide con el perfil buscado.
5. String
Equivale a VARCHAR. Se usa para texto corto, como nombres o correos.
$table->string('nombre', 100);
Ejemplo: nombre del cliente.
6. Text
Se usa para texto largo, como observaciones o descripciones.
$table->text('observacion')->nullable();
Ejemplo: comentarios internos de un lead.
7. Integer
Se usa para números enteros grandes. Puede ser unsigned para valores positivos.
$table->integer('cantidad')->unsigned();
Ejemplo: cantidad de productos en stock.
📊 Comparación entre tipos
| Tipo | ¿Qué almacena? | Ejemplo | Ventajas | Desventajas |
|---|---|---|---|---|
boolean |
0 o 1 | Activo/inactivo | Sencillo y legible | No admite indefinido |
boolean nullable |
0, 1 o null | Verificación pendiente | Permite un tercer estado | Más difícil de consultar |
tinyInteger |
0 a 255 | Estados codificados | Eficiente | Menos legible sin mapear |
enum |
Lista fija | iniciar / si / no | Restringe valores | Difícil de ampliar |
string |
Texto corto | Nombre, email | Flexible | No valida opciones |
text |
Texto largo | Observaciones | Permite mucho contenido | No eficiente en búsquedas |
integer |
Números grandes | Stock, precios | Amplio rango | Ocupa más espacio |
✅ Recomendaciones finales
boolean para valores binarios claros (sí/no).✔ Usa
boolean nullable si necesitas un tercer estado indefinido.✔ Usa
tinyInteger cuando manejes múltiples estados codificados.✔ Usa
enum para listas cortas y fijas.✔ Usa
string para valores dinámicos o de texto corto.✔ Usa
text para descripciones largas.✔ Usa
integer para cantidades, IDs o números enteros grandes.