Wat zijn migraties
Migraties zijn een soort versiebeheer voor je database. Ze stellen een team in staat om de definitie van het databaseschema van de applicatie te delen en te beheren. Je hebt vast weleens meegemaakt dat je na het pullen van de broncode aan teamleden moest vertellen: “voeg handmatig een kolom toe aan je lokale database”. Migraties lossen dat probleem op. Migratiebestanden staan in de directorydatabase/migrations.
Elke bestandsnaam bevat een timestamp die Laravel gebruikt om de uitvoeringsvolgorde van de migraties te bepalen.
Een migratiebestand aanmaken
Met het Artisan-commandomake:migration genereer je een nieuw migratiebestand.
create_posts_table, dan staat de code om de tabel posts aan te maken al voor je klaar.
De structuur van een migratie
Een migratieklasse heeft twee methoden:up en down.
- De
up-methode: voegt tabellen, kolommen en indexen toe aan de database. - De
down-methode: maakt de bewerkingen vanupongedaan. Wordt aangeroepen bij een rollback.
De belangrijkste kolomdefinitiemethoden
DeBlueprint-klasse biedt een groot aantal kolomtypen.
Kolommodifiers
Aan kolomdefinities voeg je modifiers toe via een methodchain.Migraties uitvoeren
Met het commandomigrate voer je alle nog niet uitgevoerde migraties uit.
migrate:status.
Rollback
Om de laatste batch migraties terug te draaien gebruik jemigrate:rollback.
--step op.
migrate:refresh.
migrate:refresh bouwt alle tabellen opnieuw op, waardoor bestaande data verloren gaat.
Handig om de database tijdens de ontwikkeling te resetten.Praktijkvoorbeeld: de posts-tabel aanmaken
Aan de hand van eenposts-tabel voor blogposts lopen we het hele proces door.
1. Het migratiebestand genereren
2. De migratie bewerken
Open en bewerkdatabase/migrations/xxxx_xx_xx_xxxxxx_create_posts_table.php.
3. De migratie uitvoeren
posts in de database aangemaakt.
4. Later een kolom toevoegen
Wil je na het aanmaken van de tabel een nieuwe kolom toevoegen, bewerk dan niet de bestaande migratie, maar maak een nieuwe migratie aan.Migratie-events
Bij elke migratiebewerking worden events uitgezonden. Alle events erven over vanIlluminate\Database\Events\MigrationEvent.
Je kunt bijvoorbeeld luisteren naar het event
MigrationsEnded en na afronding van de migraties de cache legen.
Volgende stappen
Databaseseeding
Leer hoe je voorbeelddata plaatst in de tabellen die je met migraties hebt aangemaakt.
Introductie tot Eloquent
Leer hoe je de tabellen die je met migraties hebt aangemaakt bewerkt met de Eloquent ORM.