
Ben je nog niet vertrouwd met de scopes van Laravel? Dan is dit de tutorial die je zoekt 😉 .
Wat zijn scopes
Laravel kent twee soorten scopes: global en local. Om het eenvoudig te houden behandel ik alleen de local scopes, werp bij gelegenheid toch zeker een blik op de global scopes.
Wat is een local query scope in Laravel dan precies? Goede vraag. Hier is een voorbeeld van een local scope in een gebruikersmodel:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
public function scopeAdmin($query)
{
return $query->where('admin', 1);
}
}
In het codevoorbeeld hierboven zie je de methode scopeAdmin, die een $query teruggeeft waarin de kolom admin de waarde 1 heeft. Nu je een local scope hebt gezien, gaan we hem gebruiken.
Hoe gebruik je scopes
Wil je onze scopeAdmin in het project gebruiken om een collectie van je adminaccounts op te halen, dan volstaat deze code:
$admins = User::admin()->all();
Dat levert ons nu elke admin in de database op.
Je ziet hopelijk hoe krachtig ze zijn, en hoeveel tijd scopes je besparen terwijl je code leesbaarder wordt. Ben je nog niet overtuigd, lees dan door voor een voorbeeld van hoe ze je leven makkelijker maken.
Waarom scopes gebruiken
Neem de vorige codevoorbeelden en stel dat we de query willen aanpassen zodat ze alleen nog de admin teruggeeft waarvan de kolom active de waarde 1 heeft. Zonder scopes zouden we de hele codebase moeten afzoeken naar deze query:
$admins = User::where('admin', 1)->all();
Om die dan te vervangen door:
$admins = User::where('admin', 1)->where('active', 1)->all();
Met scopes hoeven we alleen de scope zelf aan te passen:
public function scopeAdmin($query)
{
return $query->where('admin', 1)->where('active', 1);
}
En al onze bestaande queries halen voortaan de admingebruikers op waarvan active op 1 staat. Je ziet het: je code wordt efficiënter, beter te onderhouden en makkelijker te lezen.
Conclusie
Scopes gebruiken in je Laravel-applicatie brengt de logica naar je Eloquent-modellen in plaats van ze rechtstreeks in je views en controllers te zetten. Dat maakt je project makkelijker te onderhouden en te lezen.
Ik hoop dat dit artikel je een beter beeld van de scopes van Laravel heeft gegeven, en dat je ze in je volgende Laravel-projecten gaat gebruiken ✌️.


