Lo mismo pasa con Filament. Por defecto, busca los modelos en app/Models. Pero si organizaste tus modelos en carpetas como app/Models/Inventario o app/Models/Ventas, Filament no los encuentra. La solución: --model-namespace, que es como darle la dirección exacta al delivery.
El problema que resolvemos
En proyectos grandes, no quieres todos los modelos revueltos en una sola carpeta. Los organizas por área: inventario, ventas, usuarios… Pero Filament, por defecto, busca en app/Models. Si tu modelo está en app/Models/Inventario/Producto.php, Filament dice: «No lo encuentro».
💡 Aquí está el truco: con --model-namespace, le dices exactamente dónde buscar.
Una estructura organizada
Mira cómo se ve un proyecto bien organizado:
app/Models/
├── Inventario/
│ ├── Producto.php
│ └── Categoria.php
├── Ventas/
│ ├── Pedido.php
│ └── Factura.php
└── Usuarios/
└── Cliente.php
El comando con la dirección exacta
Si tu modelo está en App\Models\Inventario\Producto, usa este comando:
📝 ESTE ES EL CÓDIGO QUE VAMOS A APRENDER:
📍 Archivo: terminal (línea de comandos)
php artisan make:filament-resource Producto --model-namespace=App\\Models\\Inventario
🔍 ¿Por qué las barras dobles?
App\\Models\\Inventario → En la terminal, necesitas barras DOBLES \\ porque una sola barra puede ser interpretada como un carácter especial. Es un detalle técnico, pero importante.
📊 Dónde busca Filament con y sin –model-namespace:
| Comando | Dónde busca |
|---|---|
| Sin –model-namespace | App\Models\Producto |
| Con –model-namespace=App\Models\Inventario | App\Models\Inventario\Producto |
¿Qué pasa si no usas –model-namespace?
Filament te mostrará un error:
Model [App\Models\Producto] not found.
💡 Esto significa: «Busqué en el lugar por defecto y no lo encontré. Dame la dirección correcta con –model-namespace».
Combinar con otras opciones
Puedes mezclar --model-namespace con todas las banderas que ya aprendiste:
# Resource con namespace + generación automática
php artisan make:filament-resource Producto --model-namespace=App\\Models\\Inventario --generate
# Resource completo con todo
php artisan make:filament-resource Factura --model-namespace=App\\Models\\Ventas --generate --soft-deletes --view
El detalle importante
El namespace que pongas en el comando debe ser EXACTAMENTE igual al que tienes en tu archivo de modelo. Si tu modelo dice:
// En app/Models/Inventario/Producto.php
namespace App\Models\Inventario; // 👈 ESTE es el namespace
class Producto extends Model
{
// ...
}
Entonces el comando debe ser: --model-namespace=App\Models\Inventario (sin el nombre de la clase, solo la carpeta).
🎉 ¿Qué aprendimos hoy?
--model-namespacele dice a Filament dónde encontrar tu modelo- Úsalo cuando tus modelos están organizados en carpetas
- Usa barras dobles
\\en el comando - El namespace debe coincidir EXACTAMENTE con el de tu archivo
- Lo puedes combinar con todas las otras banderas
🏆 ¡FELICITACIONES! Completaste el Módulo 1
Ahora sabes TODO lo básico sobre Resources en Filament:
- ✅ Crear resources con
make:filament-resource - ✅ Personalizar nombres con
$modelLabel - ✅ Identificar registros con
$recordTitleAttribute - ✅ Construir formularios con
form() - ✅ Diseñar listados con
table() - ✅ Crear resources simples con
--simple - ✅ Generar automáticamente con
--generate - ✅ Usar papelera con
--soft-deletes - ✅ Crear páginas de vista con
--view - ✅ Especificar namespace con
--model-namespace
¡Estás listo para el Módulo 2! 🚀
En el siguiente módulo veremos relaciones entre resources y cómo gestionar datos conectados.