In uitleg 3: Basics OOP in Laravel, heb je kunnen zien hoe je je website dynamisch kunt maken met tekst-bestanden en met Yaml:
---
title: My First Blog
date: 2022-01-02
excerpt: Lorem ipsum dolor sit.
slug: my-first-post
---
<p>
Lorem ipsum dolor sit amet.
</p>
Gegevens die met Yaml in te lezen zijn. Hiermee kun je je site dynamisch maken
Door je webapplicatie dynamisch te maken, hoef je niet voor elke pagina een compleet opgemaakte HTML-bestand te maken: je kunt werken met 1 template en vult je op de plek van variabelen de juiste gegevens, zoals de titel, een datum, de hoofdtekst enzovoorts.
De volgende stap in gemak is de je website dynamisch maken met een database: de gegevens staan nu niet meer in losse bestanden, maar in 1 database.
Als eerste maak je zelf een database aan, met PhpMyadmin of een andere database-tool, of via de command-line.
Mac of Linux-gebruikers kunnen ook het commando php artisan db uitvoeren om in de database-shell te komen.
Daarvoor moet je natuurlijk de database-server aan hebben staan in Xampp, Mamp of Laragon, MySQL-server of wat dan ook.
.env-bestand aan wat de naam is van de database.DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=
<aside>
💡 Laravel is niet meer dan een hoop PHP-bestanden.
Het heeft of is geen webserver en databaseserver.
Als je php artisan serve uitvoert, maakt Laravel gebruikt van PHP’s ingebouwde server.
Je hoeft php artisan serve niet te gebruiken. Je kunt ook ‘gewoon’ Apache starten vanuit Xampp/Mamp/Laragon. Maar de document root moet dan wel de public-map van je Laravel-installatie zijn.
Laravel heeft dus ook geen ingebouwde database-server. Die moet je handmatig aanzetten, in Xampp, Mamp, Lampp, Laragon of stand alone of wat voor een server-pakket dan ook.
</aside>
Als je nu het volgende commando intoets, zal Laravel een aantal standaard tabellen aanmaken in de database:
php artisan migrate
Check je database maar eens! Nu staat er tabellen in (failed_jobs, migrations, password_resets, personal_access_tokens en users).
Deze tabellen zijn aangemaakt op basis van migration-bestanden. Deze migration-bestanden staan in de map database/migrations. Daarin zie je PHP-bestanden staan met de namen van de tabellen die net zijn aangemaakt.
Als je zo’n bestand opent, zie je code staan om een tabel aan te maken. Deze staat om de method met de naam “up”. Het is een method, want het php-bestand is een Class.
Er staat ook een method ‘down’ om de tabel te verwijderen uit de database.
Zie het voorbeeld hiernaast: dit is de method “up”. Dit is de code die de kolommen beschrijft van de users-tabel: een kolom id, name, email enz. De aangemaakte tabel komt precies overeen met de code die hier staat.
Je kunt heel eenvoudig de code hier in dit bestand aanpassen, vervolgens php artisan migrate uitvoeren, en de aanpassing zal in de database-tabel doorgevoerd worden!
Daarvoor moet je eerst de laatste aanpassingen aan de database terugdraaien met php artisan migrate:rollback en daarna weer opnieuw php artisan migrate uitvoeren,
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
Laravel werkt volgens de ORM (Object-Relational Mapping) zienswijze. In die zienswijze is elk record in een tabel een object.
Om gemakkelijk met de gegevens in de database te werken, gebruikt Laravel een een tool genaamd Eloquent.
Voor elke tabel is er een Eloquent-model of class. En elke instance van een Eloquent-class (elk object dus), is gekoppeld aan een record in de tabel. Technisch gezien noem je dit het Active Record Pattern. Zie hiernaast voor uitleg.
Laten we een gebruiker aanmaken met behulp van Eloquent. Dit kan in een php-bestand die je oproept via een route, maar het kan ook via de command-line.
Hiervoor heeft Laravel de handige tool artisan tinker. Met artisan tinker kun je eenvoudig een user aanmaken via code op de commandline.
<aside> 💡 Active Record Pattern en ORM
Active Record Pattern is een manier om data in een database te benaderen of beschrijven.
In de Active Record Pattern zienswijze is elk record in een tabel een object, zoals we dat kennen van Classes. Met dat object kun je dingen doen in de database, zoals toevoegen, aanpassen, bekijken en verwijderen.
Dit zijn de CRUD (Create, Read, Update, Delete)-handelingen zoals je dat eerder hebt gebruikt bij databases!
Al die records of objecten hebben een relatie met elkaar : een User (= een object) heeft een Blog ( = een object) geschreven, of een Product (= een object) besteld en dit product staat op de Bestellijst (= een object) gezet.
Dit bij elkaar noem je Object-Relational Mapping, of ORM.
</aside>
In de code hieronder maken we, met behulp van tinker, een User-object aan, voegen er gegevens aan toe, en slaan die op in de database.
Typ onderstaande code op de commandline