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.
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
- Een schermafdruk van je browser met phpmayadmin waarin te zien is dat de tabel is aangemaakt (zoals in het voorbeeld).
- Het bestand
2022_10_20_200701_create_product_table.php
(in database/migrations).
--