Laravel

Models

In dit hoofdstuk gaan we de movie-app verder uitwerken. De start is aan de 'achterkant' van de applicatie. De data voor de applicatie wordt opgeslagen in de database. De 'models' van de applicatie zorgen voor de communicatie met de database en ze leveren de gevraagde gegevens aan de 'controllers'. Movie app ERD
Je maakt een nieuw model om movie-gegevens in op te slaan met onderstaande code:

php artisan make:model Movie -m

Met bovenstaand commando wordt een model-class aangemaakt en er wordt een migration-class aangemaakt. De migration zorgt voor het aanmaken van de tabel in de database. Laravel maakt in de map app>Models een bestand aan met de naam van het model

movie-app 
|-- app
|-- Models
|-- Movie.php

Migrations

Laravel maakt in de map database->migrations een bestand aan met als naam de creatiedatum

movie-app 
|-- database
|-- 2021_11_07_140728_create_movie_table.php

In de migration moet je aangeven welke velden je nodig hebt. Zoals je ziet is er al een veld 'id' voor de primaire sleutel. De methode timestamps creƫert twee velden om de aanmaakdatum vast te leggen en eventueel een datum waarop records zijn aangepast.

    public function up()
{
Schema::create('movies', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}

De migration wordt aangevuld met de velden die nodig zijn om de informatie voor movies vast te leggen. Hier vind je alle mogelijke veld-typen die je kunt gebruiken

    public function up()
{
Schema::create('movies', function (Blueprint $table) {
$table->id();
$table->string('title', 125);
$table->smallinteger('year');
$table->timestamps();
});
}

De migration zorgt ervoor dat de tabel in de database wordt aangemaakt, zodat het model via een pdo connectie data kan opvragen of manipuleren. Je start de migration vanaf de command-line:

php artisan migrate
// of
php artisan migrate:fresh
// zodat 'oude' data eerst wordt verwijderd en de tabel opnieuw wordt aangemaakt

Inmiddels heb je in de map app->Models nu 2 models. 'User' en 'Movie'. User is bij de installatie al aangemaakt door Laravel. Bij het uitvoeren van de migration zijn nog een aantal andere tabellen aangemaakt, waaronder de users-tabel.