Ga direct naar de inhoud
DedicatedPHP Contact

Databasebeheer met Eloquent ORM in Laravel

Leer hoe je de Laravel ORM gebruikt om verbinding te maken met databases.

Eloquent ORM

Databasebeheer is een essentieel aspect van elke webapplicatie. Laravel, een populair PHP-framework, maakt deze taak eenvoudig met Eloquent ORM (Object-Relational Mapping). Eloquent is een efficiënte en elegante manier om met databases te communiceren door middel van objecten en relaties in plaats van rechtstreeks SQL-query's te schrijven.

Wat is een ORM?

ORM staat voor "Object-Relational Mapping". Het is een programmeertechniek die wordt gebruikt om gegevens om te zetten tussen het typesysteem van een objectgeoriënteerde programmeertaal en het typesysteem van een relationele database.

Simpel gezegd is een ORM een manier om met je database te communiceren, alsof het een objectgeoriënteerde database is.

Voordelen van het gebruik van een ORM

Hieronder volgen enkele voordelen van het gebruik van een ORM bij softwareontwikkeling:

  • Database-abstractie ORM's stellen ontwikkelaars in staat om query's te schrijven in de programmeertaal waarmee ze werken, in plaats van SQL of een andere databasequerytaal. Dit betekent dat je je kunt concentreren op het schrijven van code in een taal die je al kent, wat je productiviteit kan verhogen.
  • Onafhankelijkheid van het databasesysteem Met een ORM kan de code die je schrijft onafhankelijk zijn van het onderliggende databasesysteem. Dit betekent dat je met minimale codeaanpassingen kunt overschakelen naar een ander databasesysteem.
  • Snellere ontwikkeling – ORM's beschikken vaak over veel ingebouwde functies, zoals queryverwerking, transacties, migraties, seeds en meer. Deze functies kunnen je helpen sneller te ontwikkelen doordat je deze code niet handmatig hoeft te schrijven.
  • Beveiliging ORM's hebben vaak ingebouwde beveiligingen tegen veelvoorkomende databaseaanvallen, zoals SQL-injectie. Dit kan uw applicatie veiliger maken.
  • Integratie met objectgeoriënteerde code Omdat ORM's je in staat stellen om met je data te interageren als objecten, kun je alle mogelijkheden van objectgeoriënteerd programmeren benutten, zoals overerving, inkapseling, polymorfisme, enzovoort.
  • Onderhoudbaarheid Code is over het algemeen gemakkelijker te lezen en te begrijpen, wat het onderhouden en bijwerken van je app een stuk eenvoudiger kan maken.

Het is belangrijk om te benadrukken dat ORM's weliswaar veel voordelen bieden, maar ook nadelen kunnen hebben, zoals extra overhead en in sommige gevallen verlies van controle over databasequery's. Voor veel toepassingen wegen de voordelen van het gebruik van een ORM echter ruimschoots op tegen deze nadelen.

Wat is Eloquent ORM?

Eloquent ORM is een techniek waarmee je in Laravel met databases kunt communiceren alsof het PHP-objecten zijn. ORM staat voor "Object-Relational Mapping" en is een programmeerparadigma dat gegevens tussen incompatibele systemen omzet met behulp van "objecten". Deze techniek vereenvoudigt gegevensmanipulatie en vermindert de noodzaak om SQL-code te schrijven.

Eloquent-configuratie

Om Eloquent te gaan gebruiken, moeten we modellen definiëren. In Laravel heeft elke tabel in de database een bijbehorend "Model" waarmee je met die tabel kunt communiceren.

Een Eloquent-model is simpelweg een PHP-klasse die standaard in de map `app/` te vinden is. Om een nieuw model te maken, kunt u het commando `artisan make:model` gebruiken. Voor een tabel met gebruikers kunt u bijvoorbeeld een `User`-model maken met het volgende commando:

php artisan make:model Gebruiker

Dit zal een nieuwe modelklasse aanmaken in app/Models/User.php.

CRUD (Create, Read, Update, Delete) met Eloquent

Met Eloquent zijn CRUD-bewerkingen (Create, Read, Update, Delete) eenvoudig.

creëren

Om een nieuw record in de database aan te maken, hoeft u alleen maar een nieuwe instantie van het model te creëren, de attributen ervan in te stellen en vervolgens de save-methode aan te roepen.

$user = new User;
$user->name = 'John Doe';
$user->email = 'john@example.com';
$user->password = Hash::make('password');
$user->save();

Lezen

Om gegevens te lezen, kunt u verschillende methoden gebruiken die beschikbaar zijn in Eloquent. Om bijvoorbeeld alle gebruikers op te halen, kunt u het volgende doen:

$users = User::all();

Het bijwerken van een record is net zo eenvoudig als het wijzigen van een paar attributen en vervolgens het aanroepen van de opslagmethode.

$user = User::find(1);
$user->email = 'new-email@example.com';
$user->save();

verwijderen

Om een record te verwijderen, roept u tot slot de delete-methode aan.

$user = User::find(1);
$user->delete();

Relaties met Eloquent

Eloquent maakt het ook eenvoudig om relaties tussen tabellen te definiëren en te beheren, zoals "één-op-één", "één-op-veel", "veel-op-veel", "heeft-één-via", "heeft-veel-via" en "veel-op-veel" polymorf.

Als een gebruiker bijvoorbeeld veel berichten heeft, kunt u deze relatie in het gebruikersmodel als volgt definiëren:

openbare functie posts()
{
return $this->hasMany('App\Models\Post');
}

Vervolgens kunt u alle berichten van een gebruiker als volgt bekijken:

$user = User::find(1);
$posts = $user->posts;

Samenvattend biedt Eloquent ORM in Laravel een intuïtieve en flexibele interface voor interactie met databases. De objectgeoriënteerde aanpak en de brede functionaliteit maken databasebeheer aanzienlijk eenvoudiger. minder foutgevoelig.

Geavanceerde zoekopdrachten

Naast de basis CRUD-bewerkingen biedt Eloquent een groot aantal methoden voor het uitvoeren van complexere query's. Als je bijvoorbeeld alle gebruikers met meer dan 100 berichten wilt ophalen, kun je dat als volgt doen:

$users = User::has('posts', '>', 100)->get();

Of als je alle berichten van een gebruiker wilt zien die in de afgelopen maand zijn geplaatst, kun je dat als volgt doen:

$recentPosts = $user->posts()->where('created_at', '>', Carbon::now()->subMonth())->get();

complexe functies

Meedoen

Om een join-bewerking uit te voeren, kunt u de `join`-methode in de Eloquent-queryconstructor gebruiken. Als u bijvoorbeeld alle gebruikers samen met hun berichtdetails wilt ophalen, kunt u dat als volgt doen:

$users = DB::table('users')
->join('posts', 'users.id', '=', 'posts.user_id')
->select('users.*', 'posts.description')
->get();

Hier voegen we de tabellen 'users' en 'posts' samen, waarbij de 'id' uit de tabel 'users' overeenkomt met de 'user_id' uit de tabel 'posts'.

Unie

Om de resultaten van meerdere zoekopdrachten te combineren tot één resultaatset, kunt u de UNION-methode gebruiken. Als u bijvoorbeeld alle berichten wilt ophalen die vandaag zijn gepubliceerd of die minstens 10 likes hebben, kunt u dat als volgt doen:

$first = DB::table('posts')
->waar('created_at', '=', Carbon::today());

$posts = DB::table('posts')
->waar('likes', '>=', 10)
->union($first)
->get();

Groeperen op

Met de `groupBy`-methode kunt u de queryresultaten groeperen op basis van een of meer kolommen. Als u bijvoorbeeld het aantal berichten wilt weten dat elke gebruiker heeft geplaatst, kunt u dat als volgt doen:

$users = DB::table('posts')
->select('user_id', DB::raw('count(*) as total_posts'))
->groupBy('user_id')
->get();

Het hebben

Met de `having`-methode kun je de zoekresultaten filteren op basis van een SQL-voorwaarde die begint met "having". Als je bijvoorbeeld alleen de gebruikers wilt zien die meer dan 10 berichten hebben geplaatst, kun je dat als volgt doen:

$users = DB::table('posts')
->select('user_id', DB::raw('count(*) as total_posts'))
->groupBy('user_id')
->having('total_posts', '>', 10)
->get();

Houd er rekening mee dat dit slechts de basisbewerkingen zijn die je met Eloquent kunt uitvoeren. Laravel biedt veel extra functionaliteit waarmee je complexere en krachtigere query's kunt bouwen.

Mutators en Accessors

Eloquent biedt ook functionaliteit voor mutators en accessors, waarmee je kunt definiëren hoe de attributen van een model moeten worden gemanipuleerd wanneer ze worden ingesteld of opgevraagd. Als je er bijvoorbeeld voor wilt zorgen dat alle e-mailadressen van gebruikers in kleine letters worden weergegeven, kun je een mutator definiëren voor het User-model als volgt:

openbare functie setEmailAttribute($value)
{
$this->attributes['email'] = strtolower($value);
}

Conclusie

Eloquent ORM is een krachtige en flexibele tool voor het beheren van databases in Laravel. De objectgeoriënteerde aanpak en de uitgebreide functionaliteit maken databasebeheer veel eenvoudiger en prettiger. Door Eloquent te leren gebruiken, kun je je efficiëntie en productiviteit als Laravel-ontwikkelaar aanzienlijk verbeteren.

Wil je deze ideeën toepassen op je project?Laten we uw PHP-platform bespreken.
Bekijk gerelateerde service