Het probleem
Je hebt je eerste Laravel-project gestart met php artisan serve. Wat je misschien niet doorhad: dat was meteen je eerste kennismaking met het gereedschap dat je als Laravel-developer het vaakst gebruikt. Artisan is Laravel's command-line tool. Het genereert bestanden, draait je migrations en laat je in je app kijken, allemaal zonder je terminal te verlaten.
Wat je leert
- Wat Artisan is en hoe een Artisan-commando is opgebouwd
- Hoe je ontdekt welke commando's er zijn en wat ze doen
- De
make:-commando's waarmee je bestanden genereert - Hoe je migrations draait en de status ervan bekijkt
- Hoe je in je app kijkt met
about,route:listentinker
Voorkennis
- Een Laravel-project dat lokaal draait (zie Laravel installeren)
- Je weet waar
.enven de config-bestanden staan (zie .env en config-bestanden in Laravel) - Je kunt een terminal openen in de map van je project
Wat is Artisan?
In de root van elk Laravel-project staat een bestand dat simpelweg artisan heet. Dat is een PHP-script, en elk commando start je door PHP dat script te laten uitvoeren:
php artisan <commando> <argumenten> --<opties>
Je kunt Artisan zien als een assistent die het saaie werk voor je doet. In plaats van zelf een controller-bestand aan te maken, de juiste map te zoeken en de basiscode over te typen, vraag je Artisan om het te doen. Het resultaat staat altijd op de juiste plek, met de juiste opzet.
De commando's zijn gegroepeerd met een dubbele punt: alles wat met migrations te maken heeft begint met migrate, alles wat iets genereert met make:, alles over routes met route:.
Stap voor stap
Stap 1 — Ontdek wat er is
Je hoeft geen commando's uit je hoofd te leren. Artisan vertelt je zelf wat het kan:
php artisan list
Je ziet een lange lijst, gegroepeerd per onderwerp. Wil je weten wat één specifiek commando doet en welke opties het heeft? Zet er --help achter:
php artisan make:controller --help
Dit is het belangrijkste commando van deze hele post. Elk ander commando kun je hiermee zelf onderzoeken.
Stap 2 — Bestanden genereren met make:
De make:-commando's maken nieuwe bestanden aan op de juiste plek. Een controller:
php artisan make:controller CourseController
Dit maakt app/Http/Controllers/CourseController.php aan, met de juiste namespace en een lege klasse, klaar om te vullen.
Een model met bijbehorende migration in één keer:
php artisan make:model Course -m
De optie -m zorgt dat Laravel naast app/Models/Course.php ook een migration aanmaakt in database/migrations/, met een naam als 2026_10_01_120000_create_courses_table.php. Je hoeft dus niet twee losse commando's te onthouden.
Andere make:-commando's die je snel tegenkomt:
php artisan make:migration add_price_to_courses_table
php artisan make:seeder CourseSeeder
php artisan make:request StoreCourseRequest
Stap 3 — Je database bijwerken met migrate
Een migration beschrijft een wijziging in je database, zoals het aanmaken van een tabel. Met dit commando voer je alle migrations uit die nog niet zijn gedraaid:
php artisan migrate
Wil je zien welke migrations al zijn uitgevoerd en welke nog niet?
php artisan migrate:status
Heb je net een migration gedraaid en zie je een fout in je kolommen? Draai de laatste batch terug, pas de migration aan en draai hem opnieuw:
php artisan migrate:rollback
php artisan migrate
Stap 4 — In je app kijken
Artisan genereert niet alleen dingen, het laat je ook zien wat er in je app gebeurt. Een overzicht van je omgeving, Laravel-versie, database en cache-instellingen:
php artisan about
Alle routes in je app, met URL, HTTP-methode en de controller die ze afhandelt:
php artisan route:list
Op dit moment zie je hier nog weinig. In de volgende post, over routing, wordt dit een van je beste vrienden.
Stap 5 — Snel iets uitproberen met tinker
tinker opent een interactieve PHP-omgeving waarin je hele Laravel-app geladen is. Ideaal om even snel iets te controleren:
php artisan tinker
Daarna typ je gewone PHP:
config('app.name');
now()->addDays(7)->format('d-m-Y');
Met exit ga je er weer uit.
Veelgemaakte fouten
1. Artisan draaien buiten je projectmap
Krijg je deze melding?
Could not open input file: artisan
Dan sta je in de verkeerde map. Het artisan-bestand staat in de root van je project, dus daar moet je terminal ook staan. Ga eerst naar je project:
cd pad/naar/je-project
php artisan list
2. migrate:fresh gebruiken zonder te weten wat het doet
Je komt online vaak het advies tegen om php artisan migrate:fresh te draaien als er iets misgaat met je database. Dat werkt, maar dit commando verwijdert al je tabellen, inclusief alle data, en bouwt ze opnieuw op. Lokaal met testdata is dat prima. Draai het nooit op een database waarvan je de data wilt houden. Twijfel je? Gebruik migrate:rollback en migrate:status, die zijn veel minder destructief.
3. Je hebt iets aangepast, maar je app gebruikt nog de oude versie
Laravel cachet sommige dingen, zoals config, routes en views, om sneller te zijn. Heb je ooit een cache-commando gedraaid, dan kan je app oude gegevens blijven gebruiken. Met één commando leeg je alle caches tegelijk:
php artisan optimize:clear
Loop je ergens vast en snap je niet waarom je wijziging niet zichtbaar is? Dit is altijd een goede eerste stap.
Samenvatting
- Artisan is Laravel's command-line tool, en je start elk commando met
php artisan. php artisan listen--helplaten zien wat er is. Je hoeft niets uit je hoofd te leren.make:-commando's genereren bestanden op de juiste plek, enmake:model Course -mmaakt meteen ook een migration.migrate,migrate:statusenmigrate:rollbackbeheren je database, maar wees voorzichtig metmigrate:fresh.about,route:listentinkerlaten je in je app kijken, enoptimize:clearlost veel "waarom verandert er niets"-momenten op.
Hoe verder?
In de volgende post duiken we in routing in Laravel. Daar wordt route:list echt nuttig, omdat je ziet hoe elke URL in je app bij de juiste code terechtkomt.
Wil je verder dan deze handvol commando's? In de Laravel 13-training zitten de volledige command-referentie en de werkgewoontes die je dagelijks tijd besparen, en je oefent ze meteen in een echt project.