Saltar al contenido

Artisan es la interfaz de línea de comandos que viene incluida con Laravel. Es una herramienta fundamental que todo desarrollador Laravel utiliza a diario, aunque muchos solo conocen una pequeña parte de todo lo que ofrece.

En este artículo vamos a explorar desde los comandos más básicos hasta aquellos que probablemente nunca has utilizado pero que pueden ahorrarte mucho tiempo.

Comandos Básicos de Información

Antes de entrar en materia, veamos los comandos que nos ayudan a obtener información sobre nuestra aplicación y el propio Artisan.

Listar todos los comandos disponibles

php artisan list

# Equivalente
php artisan

Este comando muestra todos los comandos disponibles organizados por categorías. Es el punto de partida cuando no recuerdas el nombre exacto de un comando.

Obtener ayuda sobre un comando específico

php artisan help migrate

# Equivalente
php artisan migrate --help

Muestra información detallada sobre un comando, incluyendo sus argumentos, opciones y descripción.

Información general de la aplicación

php artisan about

Este comando, introducido en Laravel 9, muestra un resumen completo del estado de tu aplicación: versión de Laravel, versión de PHP, entorno, modo debug, drivers de caché, base de datos, colas, y mucho más. Es especialmente útil para debugging y para verificar la configuración en diferentes entornos.

Mostrar el entorno actual

php artisan env

Muestra el entorno en el que se está ejecutando la aplicación (local, production, staging, etc.).

Mostrar la versión de Laravel

php artisan --version

Comandos de Desarrollo: Los make

Los comandos make son probablemente los más utilizados durante el desarrollo. Generan archivos con la estructura básica necesaria.

Crear un modelo

php artisan make:model Product

# Con migración
php artisan make:model Product -m

# Con factory
php artisan make:model Product -f

# Con seeder
php artisan make:model Product -s

# Con controlador
php artisan make:model Product -c

# Con controlador de recursos
php artisan make:model Product -cr

# Todo junto (el comando más potente)
php artisan make:model Product -a
# Equivale a: --all (migration, factory, seeder, policy, resource controller, form requests)

La opción -a o --all es un ahorro de tiempo enorme cuando estás creando una nueva entidad completa.

Crear un controlador

php artisan make:controller ProductController

# Controlador de recursos (CRUD completo)
php artisan make:controller ProductController --resource

# Controlador API (sin create/edit)
php artisan make:controller ProductController --api

# Controlador invocable (single action)
php artisan make:controller ShowDashboardController --invokable

# Con model binding
php artisan make:controller ProductController --resource --model=Product

# Con form requests
php artisan make:controller ProductController --resource --requests

Crear una migración

php artisan make:migration create_products_table

# Especificando la tabla a crear
php artisan make:migration create_products_table --create=products

# Para modificar una tabla existente
php artisan make:migration add_status_to_products_table --table=products

Otros comandos make importantes

php artisan make:middleware CheckAge
php artisan make:request StoreProductRequest
php artisan make:resource ProductResource
php artisan make:resource ProductCollection --collection
php artisan make:factory ProductFactory
php artisan make:seeder ProductSeeder
php artisan make:policy ProductPolicy
php artisan make:policy ProductPolicy --model=Product
php artisan make:event ProductCreated
php artisan make:listener SendProductNotification --event=ProductCreated
php artisan make:job ProcessProduct
php artisan make:mail OrderShipped
php artisan make:notification InvoicePaid
php artisan make:rule Uppercase
php artisan make:command SendEmails
php artisan make:observer ProductObserver --model=Product
php artisan make:exception ProductNotFoundException
php artisan make:cast Json
php artisan make:channel OrderChannel
php artisan make:component Alert
php artisan make:view products.index
php artisan make:scope ActiveScope
php artisan make:enum Status
php artisan make:class Services/PaymentService
php artisan make:interface Contracts/PaymentGateway
php artisan make:trait Traits/HasUuid

Comandos de Base de Datos

Migraciones

# Ejecutar migraciones pendientes
php artisan migrate

# Ejecutar en producción (requiere confirmación)
php artisan migrate --force

# Revertir la última migración
php artisan migrate:rollback

# Revertir un número específico de migraciones
php artisan migrate:rollback --step=3

# Revertir todas las migraciones
php artisan migrate:reset

# Revertir y volver a ejecutar todas
php artisan migrate:refresh

# Con seeders
php artisan migrate:refresh --seed

# Eliminar todas las tablas y migrar
php artisan migrate:fresh

# Con seeders
php artisan migrate:fresh --seed

# Ver estado de las migraciones
php artisan migrate:status

# Simular la migración (ver SQL sin ejecutar)
php artisan migrate --pretend

El comando migrate:fresh es especialmente útil durante el desarrollo porque elimina todas las tablas (no solo las que tienen migraciones) y reconstruye la base de datos desde cero.

Seeders

# Ejecutar todos los seeders
php artisan db:seed

# Ejecutar un seeder específico
php artisan db:seed --class=ProductSeeder

Comandos de inspección de base de datos

Estos comandos son menos conocidos pero muy útiles:

# Ver información general de la base de datos
php artisan db:show

# Ver información con conteo de filas
php artisan db:show --counts

# Ver estructura de una tabla específica
php artisan db:table products

# Monitorear conexiones a la base de datos
php artisan db:monitor

# Abrir cliente de base de datos
php artisan db

El comando db:show muestra un resumen completo de tu base de datos: tipo, host, puerto, nombre, usuario, número de tablas, tamaño total y más. Es muy útil para verificar la configuración.

El comando db:table te muestra la estructura completa de una tabla: columnas, tipos, índices, claves foráneas y tamaño. Perfecto para inspeccionar la base de datos sin salir de la terminal.

Inspección de Modelos

php artisan model:show Product

Este comando muestra información completa sobre un modelo Eloquent: atributos (con tipos y valores por defecto), relaciones definidas, observers, traits utilizados y más. Es la forma más rápida de entender la estructura de un modelo.

# Salida en JSON
php artisan model:show Product --json

Rutas

# Listar todas las rutas
php artisan route:list

# Filtrar por método HTTP
php artisan route:list --method=GET

# Filtrar por path
php artisan route:list --path=api

# Filtrar por nombre
php artisan route:list --name=products

# Excluir rutas de vendor
php artisan route:list --except-vendor

# Solo rutas de vendor
php artisan route:list --only-vendor

# Ordenar de forma inversa
php artisan route:list --reverse

# Cachear rutas (producción)
php artisan route:cache

# Limpiar caché de rutas
php artisan route:clear

La opción --except-vendor es muy útil cuando tienes muchos paquetes instalados y solo quieres ver las rutas de tu aplicación.

Caché y Optimización

Comandos de caché

# Limpiar caché de aplicación
php artisan cache:clear

# Limpiar caché de configuración
php artisan config:clear

# Cachear configuración (producción)
php artisan config:cache

# Limpiar caché de vistas
php artisan view:clear

# Cachear vistas (producción)
php artisan view:cache

# Limpiar caché de eventos
php artisan event:clear

# Cachear eventos
php artisan event:cache

# Limpiar todo
php artisan optimize:clear

Optimización para producción

# Optimizar para producción
php artisan optimize

# Esto ejecuta:
# - config:cache
# - route:cache
# - view:cache
# - event:cache

El comando optimize es lo que deberías ejecutar en cada deployment a producción.

Colas (Queues)

# Procesar trabajos de la cola
php artisan queue:work

# Procesar solo un trabajo
php artisan queue:work --once

# Procesar hasta que la cola esté vacía
php artisan queue:work --stop-when-empty

# Especificar conexión y cola
php artisan queue:work redis --queue=emails

# Con timeout y reintentos
php artisan queue:work --timeout=60 --tries=3

# Escuchar la cola (menos eficiente que work)
php artisan queue:listen

# Ver trabajos fallidos
php artisan queue:failed

# Reintentar trabajos fallidos
php artisan queue:retry all
php artisan queue:retry 5

# Eliminar un trabajo fallido
php artisan queue:forget 5

# Eliminar todos los trabajos fallidos
php artisan queue:flush

# Reiniciar workers después de deploy
php artisan queue:restart

# Limpiar trabajos de una cola
php artisan queue:clear
php artisan queue:clear redis --queue=emails

# Monitorear colas
php artisan queue:monitor redis:default,redis:emails --max=100

El comando queue:monitor es muy útil para alertar cuando una cola tiene demasiados trabajos pendientes.

Tareas Programadas (Scheduler)

# Ejecutar el scheduler
php artisan schedule:run

# Ver lista de tareas programadas
php artisan schedule:list

# Probar una tarea específica
php artisan schedule:test

# Ejecutar scheduler en modo trabajo (Laravel 8+)
php artisan schedule:work

# Limpiar locks del scheduler
php artisan schedule:clear-cache

# Interrumpir tareas en ejecución
php artisan schedule:interrupt

El comando schedule:list muestra todas las tareas programadas con su próxima ejecución. Muy útil para verificar que todo está configurado correctamente.

El comando schedule:work mantiene el scheduler ejecutándose en primer plano, útil para desarrollo local sin necesidad de configurar cron.

Modo Mantenimiento

# Activar modo mantenimiento
php artisan down

# Con mensaje personalizado
php artisan down --render="errors::503"

# Permitir acceso con secret
php artisan down --secret="laravel-is-awesome"
# Acceder con: tudominio.com/laravel-is-awesome

# Redirigir a otra URL
php artisan down --redirect=/

# Con código de estado específico
php artisan down --status=503

# Reintentar después de X segundos
php artisan down --retry=60

# Desactivar modo mantenimiento
php artisan up

La opción --secret es muy útil para poder acceder a la aplicación durante el mantenimiento sin desactivarlo. Una vez accedes con el secret, se establece una cookie que te permite navegar normalmente.

Servidor de Desarrollo

# Iniciar servidor
php artisan serve

# Puerto personalizado
php artisan serve --port=8080

# Host personalizado
php artisan serve --host=0.0.0.0

Tinker: La REPL de Laravel

php artisan tinker

Tinker te permite interactuar con tu aplicación Laravel directamente desde la terminal. Puedes ejecutar código PHP, consultar modelos Eloquent, probar helpers y mucho más.

Ejemplos de uso dentro de Tinker:

<?php
// Crear un usuario
User::factory()->create();

// Consultar datos
User::where('email', 'like', '%@gmail.com')->count();

// Probar helpers
now()->addDays(30)->format('Y-m-d');

// Disparar eventos
event(new App\Events\UserRegistered($user));

// Despachar jobs (usar Bus::dispatch en Tinker)
Bus::dispatch(new App\Jobs\ProcessPayment($order));

Comandos Menos Conocidos

Inspiración

php artisan inspire

Muestra una cita inspiradora. Sí, existe y está incluido por defecto en Laravel.

Publicar stubs

php artisan stub:publish

Publica los stubs (plantillas) que Artisan usa para generar archivos. Esto te permite personalizar cómo se generan los modelos, controladores, migraciones, etc. Los stubs se publican en el directorio stubs/ de tu aplicación.

Publicar assets de paquetes

# Ver qué se puede publicar
php artisan vendor:publish

# Publicar de un provider específico
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"

# Publicar por tag
php artisan vendor:publish --tag=config
php artisan vendor:publish --tag=migrations

# Forzar sobrescritura
php artisan vendor:publish --force

Generar clave de aplicación

php artisan key:generate

# Mostrar sin guardar
php artisan key:generate --show

Crear enlace simbólico para storage

php artisan storage:link

Crea el enlace simbólico de public/storage a storage/app/public.

Listar eventos y listeners

php artisan event:list

Muestra todos los eventos registrados y sus listeners asociados.

Generar eventos y listeners faltantes

php artisan event:generate

Genera automáticamente los eventos y listeners que están declarados en el EventServiceProvider pero que aún no tienen sus archivos creados.

Limpiar archivos compilados

php artisan clear-compiled

Elimina el archivo de servicios compilados y el archivo de paquetes.

Poda de modelos

php artisan model:prune

# Simular sin eliminar
php artisan model:prune --pretend

# Modelo específico
php artisan model:prune --model=App\\Models\\Token

Elimina registros antiguos de modelos que implementan el trait Prunable o MassPrunable. Muy útil para limpiar tokens expirados, logs antiguos, etc.

Tests

# Ejecutar tests
php artisan test

# En paralelo
php artisan test --parallel

# Detener en el primer fallo
php artisan test --stop-on-failure

# Filtrar tests
php artisan test --filter=UserTest

# Coverage
php artisan test --coverage
php artisan test --coverage --min=80

Comandos de Paquetes Oficiales

Laravel Sail (Docker)

php artisan sail:install
php artisan sail:publish

Horizon (Colas con Redis)

php artisan horizon
php artisan horizon:status
php artisan horizon:pause
php artisan horizon:continue
php artisan horizon:terminate
php artisan horizon:snapshot
php artisan horizon:clear
php artisan horizon:purge

Telescope (Debugging)

php artisan telescope:install
php artisan telescope:prune
php artisan telescope:clear
php artisan telescope:pause
php artisan telescope:resume

Pulse (Monitoreo)

php artisan pulse:check
php artisan pulse:restart
php artisan pulse:purge

Pennant (Feature Flags)

php artisan pennant:purge

Scout (Búsqueda)

php artisan scout:import "App\Models\Product"
php artisan scout:flush "App\Models\Product"
php artisan scout:index products
php artisan scout:delete-index products

Sanctum (API Authentication)

php artisan sanctum:prune-expired

Passport (OAuth)

php artisan passport:install
php artisan passport:keys
php artisan passport:client
php artisan passport:client --personal
php artisan passport:purge

Opciones Globales de Artisan

Todos los comandos Artisan aceptan estas opciones:

--help, -h          # Mostrar ayuda
--quiet, -q         # Suprimir toda la salida
--version, -V       # Mostrar versión
--ansi              # Forzar salida ANSI
--no-ansi           # Desactivar salida ANSI
--no-interaction, -n # No hacer preguntas interactivas
--env               # El entorno bajo el cual debe ejecutarse
--verbose, -v|-vv|-vvv # Nivel de verbosidad

Ejecutar Comandos Desde Código

Puedes ejecutar comandos Artisan desde tu código PHP:

<?php

use Illuminate\Support\Facades\Artisan;

// Ejecutar comando
Artisan::call('migrate', [
    '--force' => true,
]);

// Obtener salida
$output = Artisan::output();

// Encolar comando
Artisan::queue('emails:send', [
    'user' => 1,
    '--queue' => 'default',
]);

Desde un controlador:

<?php

public function clearCache()
{
    $this->call('cache:clear');
    
    return redirect()->back()->with('status', 'Cache cleared!');
}

Conclusión

Artisan es una herramienta increíblemente potente que va mucho más allá de los típicos make:model y migrate. Conocer comandos como about, model:show, db:show, db:table, schedule:list o stub:publish puede mejorar significativamente tu productividad y tu comprensión de lo que está pasando en tu aplicación.

Te recomiendo que de vez en cuando ejecutes php artisan list y explores comandos que no conocías. Laravel añade nuevos comandos con frecuencia y siempre hay algo útil que descubrir.

school Curso completo

Curso Laravel 12
Completo 2026

El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.

access_time 8 horas de contenido
layers 4 tecnologías en 1
update 100% actualizado
code Proyectos prácticos
Ver Curso Laravel 12 arrow_forward

star Incluido en cualquier suscripción

Rutas de aprendizaje