Skip to main content

Database Migration

In deze les leren we hoe we met Laravel een database aanmaken en vullen met testdata.

Artisan

Artisan (ambachtsman) is de command line tool die bij laravel hoort. Je kunt er allemaal handige dingen mee doen. Je kunt zelfs een webserver opstarten (als je geen XAMPP gebruikt).

Let op het uitvoeren van een artisan command doen we vanuit de project directory.

Met artisan maken we een tabel, eerst voeren we het volgende in de command prompt uit.

php artisan make:migration create_links_table --create=links

Dit commando maakt een file. Deze staat in database/migrations{{datetime}}_create_links_table.php

Open deze file.

tip: ga naar de direcory waar deze file in staan in je command prompt en type notepad gevolgd door de naam van de file.

In het script staan twee functies up() and down(). up() wordt gebruikt om een nieuwe database te maken en down kan worden gebuikt om deze database weer te verwijderen.

Migartie scripts kunnen worden gebruikt om ene bestaande database aan te passen (migrate) of een nieuwe database aan te maken.

Verander de function up()

public function up()
{
	Schema::create('links', function (Blueprint $table) {
		$table->increments('id');
		$table->string('title');
		$table->string('url')->unique();
		$table->text('description'); 
		$table->timestamps();
	});
}

Om het database script te draaien moet Laravel toegnag hebben tot de database. Edit hiervoor de .env file in de files directory.

In de .env file staan configuratie parameters zoals de database naam en userid en password van de database.

In de .env.example file staat een complete voorbeeld config waar alle mogelijke configuratie parameters in staan. Voor nu beperken we ons even tot de database connectie.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=links
DB_USERNAME=root
DB_PASSWORD=

Voer de migratie uit:

php artisan migrate

Kijk nu via phpmyadmin welke of de tabel is aangemaakt.

Draai nu de migratie terug met het commando:

php artisan migrate:rollback

Kijk nu weer via phpmyadmin wat er is gebeurt.

Voer tenslotte de migratie nog een keer uit.

Met het commando:

 php artisan help migrate

Zie je alle migratoe opties. Kijk zelf in de opties hoe je een commando kan nete als of kan uitvoeren waarbij je kan zien wat er precies gebeurt; welke queries of commando's er worden uitgevoerd.

Opdracht

Kijk met deze net-alsof-optie wat er wordt uitgevoerd bij een migrate en een rollback.

Er zijn nog wat andere handige commando's die tijdens het ontwikkelen van een applicatie goed van pas kunnen komen, alle handige migratie commando's op een rijtje:

Commando Beschrijving
php artisan migrate voer de migratie uit
php artisan migrate:rollback maak de migratie weer ongedaan
php artisan migrate:refresh doe een rollback en een migrate
php artisan migrate:fresh drop alle tabellen en doe een migrate