Laravel

Llenar select en Laravel con Eloquent y Blade (Ejemplos prácticos)

Llenar un select en Laravel desde la base de datos es una tarea muy común en aplicaciones reales: formularios de clientes, categorías, sedes, roles, permisos, etc. A diferencia de PHP puro, Laravel ofrece una forma más limpia, segura y mantenible usando Eloquent y Blade.

En este artículo aprenderás cómo llenar un select en Laravel paso a paso, utilizando buenas prácticas, sin mysqli ni código procedural.

Requisitos previos

Antes de comenzar, asegúrate de contar con:

  • Laravel 9, 10, 11 u 12
  • Una base de datos configurada
  • Un modelo Eloquent
  • Conocimientos básicos de rutas, controladores y Blade

Escenario de ejemplo

Supongamos que tenemos una tabla categories con los siguientes campos:

  • id
  • name
  • active

Y queremos mostrar esas categorías en un <select> dentro de un formulario.

1. Crear el modelo Eloquent

Si aún no tienes el modelo:

php artisan make:model Category

Modelo Category.php:
Declaramos el contenido de nuestro modelo.

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
protected $table = 'categories';

protected $fillable = ['name', 'active'];
}

2. Obtener los datos desde el controlador

En el controlador, consultamos la base de datos usando Eloquent.

use App\Models\Category;

public function create()
{
$categories = Category::where('active', 1)
->orderBy('name')
->get();


return view('products.create', compact('categories'));
}

Buenas prácticas aplicadas:

  • Uso de Eloquent (no SQL crudo)
  • Filtro por estado activo
  • Ordenamiento para mejor UX

3. Llenar el select en Blade

En la vista products/create.blade.php:

<div class="form-group">
<label for="category_id">Categoría</label>
<select name="category_id" id="category_id" class="form-control" required>
<option value="">Seleccione una categoría</option>


@foreach ($categories as $category)
<option value="{{ $category->id }}">
{{ $category->name }}
</option>
@endforeach
</select>
</div>

De esta forma se logra llenar un select en Laravel usando Blade de manera limpia y legible.

4. Mantener la opción seleccionada (modo edición)

Cuando editas un registro, es importante mantener el valor seleccionado.

<option value="{{ $category->id }}"
{{ old('category_id', $product->category_id ?? '') == $category->id ? 'selected' : '' }}>
{{ $category->name }}
</option>

Esto funciona tanto para:

  • Formularios de edición
  • Validaciones fallidas

5. Usando pluck() para un código más limpio (opcional)

Laravel permite simplificar la consulta:

$categories = Category::where('active', 1)
->orderBy('name')
->pluck('name', 'id');

Y en blade se tiene que hacer lo siguiente:

@foreach ($categories as $id => $name)
<option value="{{ $id }}">{{ $name }}</option>
@endforeach

6. Llenar select en Laravel con validación

En el controlador al inicio del método debemos de añadir estas lineas para verificar que la información enviada exista en la tabla categorías, esto para evitar alguna manipulación en la parte frontal de nuestro proyecto:

$request->validate([
'category_id' => 'required|exists:categories,id'
]);

Esto garantiza que el valor enviado:

  • Existe en la base de datos
  • No fue manipulado

Errores comunes al llenar un select en Laravel

Hay algunos detalles que debemos de evitar a la hora de manejar Laravel tanto en los controladores y/o blades y estos son:

  • Usar consultas SQL crudas innecesarias
  • Consultar la base de datos directamente en la vista
  • No validar el valor seleccionado
  • No manejar el valor old()

Conclusión

Llenar un select en Laravel es un proceso sencillo si se siguen las buenas prácticas del framework. Usando Eloquent para obtener los datos y Blade para renderizarlos, obtienes un código:

  • Más limpio
  • Más seguro
  • Más escalable

Este enfoque es ideal para proyectos profesionales y aplicaciones reales.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 5 / 5. Recuento de votos: 1

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Mostrar más

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.
Botón volver arriba
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad