# Artisan — Die Kommandozeile von Laravel

> Praxis-Guide zu Laravel Artisan — Code generieren, Migrationen ausführen, Queues steuern und Caches leeren direkt über die Kommandozeile.

Source: https://www.jpkc.com/db/cheatsheets/build-languages/artisan/

<!-- PROSE:intro -->
Artisan ist die Kommandozeile, die jedem Laravel-Projekt beiliegt – du sprichst sie immer über `php artisan` an. Statt Routine-Code von Hand zu tippen, generierst du Modelle, Controller und Migrationen mit einem einzigen Befehl, steuerst Queues und geplante Tasks und räumst Caches auf, wenn sich am Code etwas geändert hat. Dieser Guide bündelt die Befehle, die du im Laravel-Alltag wirklich brauchst – vom ersten `make:`-Aufruf bis zur Wartungspflege im Produktivbetrieb.
<!-- PROSE:intro:end -->

## Allgemein

`php artisan list` — Listet alle verfügbaren Artisan-Befehle auf.

```bash
php artisan list
```

`php artisan help <command>` — Zeigt die Hilfe zu einem bestimmten Befehl an.

```bash
php artisan help make:model
```

`php artisan serve` — Startet den eingebauten Entwicklungsserver.

```bash
php artisan serve --port=8080
```

`php artisan tinker` — Öffnet eine interaktive REPL für deine Anwendung.

```bash
php artisan tinker
```

`php artisan env` — Zeigt die aktuelle Anwendungsumgebung an.

```bash
php artisan env
```

`php artisan about` — Zeigt eine Übersicht der Anwendung an (Laravel 9+).

```bash
php artisan about
```

## Code-Generierung (make:)

`php artisan make:model <Name>` — Erzeugt ein neues Eloquent-Modell.

```bash
php artisan make:model Post -mfsc
```

`php artisan make:controller <Name>` — Erzeugt einen neuen Controller.

```bash
php artisan make:controller PostController --resource
```

`php artisan make:migration <name>` — Erzeugt eine neue Datenbank-Migration.

```bash
php artisan make:migration create_posts_table
```

`php artisan make:seeder <Name>` — Erzeugt einen neuen Datenbank-Seeder.

```bash
php artisan make:seeder PostSeeder
```

`php artisan make:middleware <Name>` — Erzeugt eine neue Middleware-Klasse.

```bash
php artisan make:middleware CheckAge
```

`php artisan make:request <Name>` — Erzeugt eine neue Form-Request-Klasse zur Validierung.

```bash
php artisan make:request StorePostRequest
```

`php artisan make:command <Name>` — Erzeugt einen neuen Artisan-Befehl.

```bash
php artisan make:command SendEmails
```

`php artisan make:job <Name>` — Erzeugt eine neue Queue-Job-Klasse.

```bash
php artisan make:job ProcessPodcast
```

## Datenbank & Migrationen

`php artisan migrate` — Führt ausstehende Datenbank-Migrationen aus. In Produktion mit Bedacht einsetzen (vorher Backup, `--force` nötig).

```bash
php artisan migrate
```

`php artisan migrate:status` — Zeigt den Status jeder einzelnen Migration an.

```bash
php artisan migrate:status
```

`php artisan migrate:rollback` — Macht die letzte Batch an Migrationen rückgängig.

```bash
php artisan migrate:rollback --step=2
```

`php artisan migrate:fresh` — Verwirft alle Tabellen und führt anschließend alle Migrationen erneut aus. **Destruktiv:** löscht sämtliche Daten – in Produktion brandgefährlich und nur mit `--force`.

```bash
php artisan migrate:fresh --seed
```

`php artisan migrate:reset` — Macht alle Migrationen rückgängig und leert damit das Schema.

```bash
php artisan migrate:reset
```

`php artisan db:seed` — Führt Datenbank-Seeder aus.

```bash
php artisan db:seed --class=PostSeeder
```

`php artisan db:wipe` — Verwirft alle Tabellen, Views und Typen. **Destruktiv:** löscht die gesamte Datenbankstruktur restlos – in Produktion brandgefährlich, `--force` erforderlich.

```bash
php artisan db:wipe
```

## Cache & Konfiguration

`php artisan cache:clear` — Leert den Anwendungs-Cache.

```bash
php artisan cache:clear
```

`php artisan config:clear` — Leert den Konfigurations-Cache.

```bash
php artisan config:clear
```

`php artisan config:cache` — Erzeugt eine Konfigurations-Cache-Datei (schnelleres Laden).

```bash
php artisan config:cache
```

`php artisan route:cache` — Erzeugt eine Route-Cache-Datei.

```bash
php artisan route:cache
```

`php artisan route:clear` — Leert den Route-Cache.

```bash
php artisan route:clear
```

`php artisan view:clear` — Löscht die kompilierten View-Dateien.

```bash
php artisan view:clear
```

`php artisan optimize:clear` — Leert alle gecachten Dateien (Konfiguration, Routen, Views, Events).

```bash
php artisan optimize:clear
```

## Queues & Scheduling

`php artisan queue:work` — Startet die Verarbeitung von Jobs in der Queue.

```bash
php artisan queue:work --tries=3
```

`php artisan queue:listen` — Lauscht auf Queue-Jobs (startet nach jedem Job neu).

```bash
php artisan queue:listen
```

`php artisan queue:retry <id>` — Wiederholt einen fehlgeschlagenen Queue-Job.

```bash
php artisan queue:retry all
```

`php artisan queue:failed` — Listet alle fehlgeschlagenen Queue-Jobs auf.

```bash
php artisan queue:failed
```

`php artisan queue:flush` — Löscht alle fehlgeschlagenen Queue-Jobs.

```bash
php artisan queue:flush
```

`php artisan schedule:run` — Führt die im Scheduler definierten geplanten Tasks aus.

```bash
php artisan schedule:run
```

`php artisan schedule:list` — Listet alle geplanten Tasks auf.

```bash
php artisan schedule:list
```

## Routen & Wartung

`php artisan route:list` — Listet alle registrierten Routen auf.

```bash
php artisan route:list --path=api
```

`php artisan down` — Versetzt die Anwendung in den Wartungsmodus.

```bash
php artisan down --secret='bypass-token'
```

`php artisan up` — Holt die Anwendung aus dem Wartungsmodus zurück.

```bash
php artisan up
```

`php artisan key:generate` — Erzeugt einen neuen Verschlüsselungs-Schlüssel für die Anwendung.

```bash
php artisan key:generate
```

`php artisan storage:link` — Legt einen symbolischen Link von public/storage auf storage/app/public an.

```bash
php artisan storage:link
```

<!-- PROSE:outro -->
## Fazit

Artisan nimmt dir die wiederkehrende Fleißarbeit ab und macht Laravel-Projekte vom ersten Scaffold bis zum Deployment steuerbar – ein einziger Einstiegspunkt für Generierung, Datenbank, Queues und Wartung. Besondere Vorsicht gilt den löschenden Befehlen: `migrate:fresh` und `db:wipe` verwerfen sämtliche Tabellen und Daten und richten in der Produktion irreparablen Schaden an, wenn sie versehentlich laufen. Cache deine Konfiguration und Routen im Produktivbetrieb (`config:cache`, `route:cache`) und denke nach jeder Änderung an `optimize:clear`.

## Weiterführende Links

- [Artisan Console – Laravel-Dokumentation](https://laravel.com/docs/artisan) – offizielle Referenz zu allen Artisan-Befehlen und eigenen Commands (englisch)
- [Database: Migrations – Laravel-Dokumentation](https://laravel.com/docs/migrations) – Hintergrund zu `migrate`, `migrate:fresh` und den löschenden Befehlen (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [cargo](https://www.jpkc.com/db/cheatsheets/build-languages/cargo/) – Build-Tool und Paketmanager für Rust
- [composer](https://www.jpkc.com/db/cheatsheets/build-languages/composer/) – Abhängigkeits-Manager für PHP, Basis jedes Laravel-Projekts
- [drush](https://www.jpkc.com/db/cheatsheets/build-languages/drush/) – Kommandozeile für Drupal-Sites

