---
title: "Aprende Laravel: Artisan"
excerpt: "Aprende a usar Artisan, la consola de Laravel: los comandos que más vas a usar, cómo crear tus propios comandos con argumentos y opciones, y la entrada y salida por consola."
date: "2026-07-20T13:00:00.000Z"
category: "Laravel"
author:
  name: "angel cruz"
  picture: "https://angelcruzdevcdn.nyc3.cdn.digitaloceanspaces.com/images/me/angel-cruz.png"
ogImage:
  url: "/images/open-graph/laravel-opengraph-image.png"
seo_title: "Artisan en Laravel 13: comandos y cómo crear el tuyo (guía)"
seo_description: "Aprende Artisan, la consola de Laravel 13: comandos más usados, cómo crear un comando con make:command, argumentos y opciones en el signature, y entrada/salida."
keywords:
  - laravel
  - artisan
  - consola
  - make:command
  - laravel español
learning_path:
  series: "laravel-fundamentals"
  order: 12
  total: 13
  prev_slug: "aprende-laravel-blade-componentes"
  next_slug: "aprende-laravel-deploy"
---

Vienes usando Artisan desde el primer post de esta serie (`php artisan serve`, `make:controller`, `migrate`). **Artisan es la consola de Laravel: un script en la raíz de tu proyecto con decenas de comandos que te ahorran trabajo**, y además te deja crear los tuyos. Ahora vamos a mirarla de frente.

## Ver los comandos disponibles

Para listar todo lo que Artisan puede hacer:

```shell
php artisan list
```

Y para ver la ayuda de un comando puntual (sus argumentos y opciones):

```shell
php artisan help migrate
```

## Los que vas a usar seguido

Ya conociste varios a lo largo de la serie:

- `php artisan serve` — levanta el servidor de desarrollo
- `php artisan make:model`, `make:controller`, `make:migration` — generan clases
- `php artisan migrate` — corre las migraciones
- `php artisan route:list` — lista todas las rutas de tu app
- `php artisan tinker` — un REPL para interactuar con tu app (probar Eloquent, jobs, etc.)
- `php artisan test` — corre tus tests

## Crear tu propio comando

Cuando tienes una tarea repetible (enviar emails, limpiar datos, un import), la encapsulas en un comando. Se genera con:

```shell
php artisan make:command SendEmails
```

Se crea en `app/Console/Commands`. Defines el nombre y la firma en `$signature`, una descripción, y la lógica en `handle()`:

```php
<?php

namespace App\Console\Commands;

use App\Models\User;
use Illuminate\Console\Command;

class SendEmails extends Command
{
    protected $signature = 'mail:send {user}';

    protected $description = 'Envía un email de marketing a un usuario';

    public function handle(): void
    {
        $user = User::find($this->argument('user'));

        $this->info("Enviando email a: {$user->email}");
    }
}
```

Los comandos en `app/Console/Commands` se registran solos. Ya puedes correrlo:

```shell
php artisan mail:send 1
```

> En Laravel 13 también puedes definir la firma con los atributos `#[Signature('mail:send {user}')]` y `#[Description(...)]` sobre la clase, en vez de las propiedades. Ambas formas funcionan.

## Argumentos y opciones

En el `signature`, lo que va entre llaves define la entrada:

```php
// Argumento requerido
'mail:send {user}'

// Argumento opcional, o con valor por defecto
'mail:send {user?}'
'mail:send {user=1}'

// Opción booleana (switch): true si se pasa --queue
'mail:send {user} {--queue}'

// Opción con valor: --queue=default
'mail:send {user} {--queue=}'
```

Y los lees en `handle()` con `argument()` y `option()`:

```php
$userId = $this->argument('user');
$queue  = $this->option('queue');
```

## Entrada y salida por consola

Para mostrar información al usuario, tienes métodos con colores según el tipo:

```php
$this->info('Todo salió bien.');   // verde
$this->error('Algo falló.');       // rojo
$this->line('Texto plano.');
$this->table(['Nombre', 'Email'], $usuarios);
```

Y para pedir datos de forma interactiva:

```php
$nombre = $this->ask('¿Cómo te llamas?');

if ($this->confirm('¿Continuar?')) {
    // ...
}
```

## Siguiente Paso

Ya dominas el desarrollo. El último paso de la serie es sacar tu app del `localhost` y ponerla en producción. Sigue con [Aprende Laravel: Deploy](/post/aprende-laravel-deploy).

## Preguntas Frecuentes

### ¿Qué es Artisan?

La interfaz de línea de comandos de Laravel. Es el script `artisan` en la raíz de tu proyecto, con comandos para generar código, correr migraciones, listar rutas, testear y mucho más.

### ¿Cómo creo un comando personalizado?

Con `php artisan make:command NombreDelComando`. Se genera en `app/Console/Commands`, defines la firma en `$signature` y la lógica en `handle()`. Se registra automáticamente.

### ¿Cómo le paso datos a un comando?

Con argumentos y opciones en el `signature`: `{user}` (argumento), `{--queue}` (opción). Los lees con `$this->argument()` y `$this->option()`.

### ¿Qué es Tinker?

Un REPL (`php artisan tinker`) que te deja interactuar con tu app desde la consola: probar consultas Eloquent, disparar jobs, inspeccionar modelos, sin escribir una ruta temporal.

## Recursos Adicionales

- [Artisan Console | Laravel 13.x](https://laravel.com/docs/13.x/artisan)
- [Aprende Laravel: Controllers](/post/aprende-laravel-controllers)
- [Aprende Laravel desde cero (serie completa)](/laravel-fundamentals)

---

## Sitemap

Índice completo del sitio: [/sitemap.md](https://www.angelcruz.dev/sitemap.md)

Canónico HTML: [https://www.angelcruz.dev/post/aprende-laravel-artisan](https://www.angelcruz.dev/post/aprende-laravel-artisan)
