Skip to main content

Migrations

Inleiding

Migrations zijn als versiebeheer voor je database.

Je beschrijft met scripts hoe je database eruit moet komen te zien. Als je dan later je database verandert dan kun je met dezelfde scripts de bestaande databases aanpassen (=migreren). Dat maakt het makkelijk als je code en database aan wilt passen in de productieomgeving. In plaats van in phpmyadmin tabel voor tabel aant e passen draai je gewoon een script.

Migrations heb je ook in Yii, die hebben we alleen niet behandeld.

Database config

Laten we eerst een database maken. We maken via localhost/phpmyadmin een nieuwe database aan en noemen dat webshop.

In de root in ons Laravel project openen we dan de .env file en we zorgen ervoor dat er in de file het volgende komt te staan.

...
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=webshop
DB_USERNAME=root
DB_PASSWORD=
...

Migrations

In de terminal in Visual Studio Code voer je het volgende commando uit:

php artisan make:migration create_product_tablecreate_products_table --create=product

Dit commando maakt een file. Deze staat in database/migrations/ en heet

{{datetime}}_create_product_table._create_products_table.php

Open dit bestand en plaats de volgende code:

public function up()
{
	Schema::create('product'products', function (Blueprint $table) {
		$table->increments('id');
		$table->string('name');
		$table->text('description'); 
        $table->decimal('amount', 8, 2);
		$table->timestamps();
	});
}

In dit script wordt in 'Laravel-taal' beschreven hoe de tabel product moet worden gemaakt.

In de terminal kan je nu met het volgende commande de tabel maken.

php artisan migrate

Ga naar  localhost/phpmyadmin en controleer of de tabel aangemaakt is.

image-1666300242232.png

Naast de tabel product worden er nog meer tabellen aangemaakt. Dit zijn tabellen die Laravel standaard aanmaakt.

Als je nog een keer php artisan migrate uitvoert dan gebeurt er niets meer. Dat komt omdat de migratie al is uitgevoerd. Laravel houd bij (in de database tabel migations) welke migraties zijn uitgevoerd.

Wil je een migratie toch nog een keer willen uitvoeren dan kan dat met het commando.

php artisan migrate:refresh

Inleveren

  1.  Een schermafdruk van je browser met phpmayadmin waarin te zien is dat de tabel is aangemaakt (zoals in het voorbeeld).
  2. Het bestand 2022_10_20_200701_create_product_table.php (in database/migrations).

--