Vorige   Volgende
punthooft > laravel
Eloquent - Introductie
Eloquent is de Object Relational Mapper (ORM) in Laravel. Een ORM is laag tussen de database en de objecten die we gebruiken. Het voordeel hiervan is dat je geen SQL code hoeft te schrijven om data in en uit de database te krijgen. Dat det Eloquent voor je onder water. Voor iedere tabel in de database krijg je een class in het Model en een rij in de database tabel zal een object van de Model class worden.
Je kunt dan gegevens lezen, toevoegen, bijwerken en verwijderen alsof je met gewone PHP-objecten werkt, in plaats van met rijen en kolommen. Super genakkelijk.
Hierdoor zal de code leesbaarder en korter worden. De programmeertijd zal ook korter worden en het is tevens ook nog veiliger, omdat het SQL injecties tegen zal houden. Dit gaat wel ten kosten van een klein stukje performance, maar dat is vaak gering. Echte complexe queries moeten soms nog wel in SQL worden geschreven, hoewel je een eind kan komen met Eloquent.
Migreren
Om een database tabel aan te maken hoef je zelf geen lastige functies te schrijven. Dit gaat met migratie scripts. Dit zijn beschrijvingen hoe je database tabellen eruit moeten zien. Voor een products tabel net hierin een name, description en prijs, plus een referentie naar een category tabel is onderstaand script voldoende.
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('description')->nullable();
$table->decimal('price', 8, 2);
$table->foreignId('category_id')->constrained();
$table->timestamps();
});
Seeding
Seeding is het vullen van de gegevens. Als de tabel is gemaakt kun je deze vullen. Handig om standaard gegevens altijd op te nemen.
DB::table('levels')->insert([
[
'id' => 1,
'name' => 'Gebruiker',
'created_at' => now(),
'updated_at' => now()
],
[
'id' => 2,
'name' => 'Beheerder',
'created_at' => now(),
'updated_at' => now()
],
[
'id' => 3,
'name' => 'Admin',
'created_at' => now(),
'updated_at' => now()
]
]);
Factory
Soms wil je ontwikkelen en/of testen met heel veel gegevens. Dan kun je een factory gebruiken om gegevens in de database te zetten.
Je geeft hierbij aan hoe de gegevens eruit moeten zien, zoals hieronder voor producten. Hij vult de data dan met random waarden. Vaak Lorem ipsum achtige teksten of willekeurige nummers.
public function definition(): array
{
return [
'name' => $this->faker->words(3, true),
'description' => $this->faker->paragraphs(2, true),
'price' => $this->faker->randomFloat(2, 100, 2000),
'created_at' => now(),
'updated_at' => now(),
];
}