{"id":58328,"date":"2024-03-04T17:49:18","date_gmt":"2024-03-04T16:49:18","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=58328&#038;preview=true&#038;preview_id=58328"},"modified":"2024-06-24T23:38:17","modified_gmt":"2024-06-24T21:38:17","slug":"laravel-eloquent","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/","title":{"rendered":"Zes dingen die je moet weten om Laravel Eloquent beter te beheersen"},"content":{"rendered":"<p><a href=\"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/\">Laravel<\/a> is een open-source en eenvoudig te gebruiken <a href=\"https:\/\/kinsta.com\/nl\/blog\/php-frameworks\/\">PHP framework<\/a>. Een van de krachtigste functies is Eloquent, een object-relationele mapper (ORM) die het verwerken van databaserecords vereenvoudigt.<\/p>\n<p>Eloquent versnelt het maken, lezen, bijwerken en verwijderen van gegevens uit een database vanuit een applicatie. Als je Eloquent gebruikt, maak je modellen die databasetabellen weerspiegelen en gebruik je die modellen om query&#8217;s te maken.<\/p>\n<p>In dit artikel worden zes elementen van de krachtigste functionaliteit van Eloquent besproken: query scopes, relaties, mutators en accessors, collections, modelverwijdering en model factories. Aan de hand van praktische voorbeelden wordt uitgelegd wat elke functie doet. We hopen dat je deze voorbeelden kunt gebruiken om een vliegende start te maken met <a href=\"https:\/\/laravel.com\/docs\/10.x\/eloquent\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Eloquent<\/a>.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>1. Eloquent query scopes<\/h2>\n<p>Bij het bouwen van een applicatie kom je soms situaties tegen waarin je voorwaarden meer dan eens gebruikt. Het herschrijven van code in elk geval kan de kans op fouten vergroten en je code rommelig maken. Laravel lost dit probleem op door dergelijke voorwaarden te verpakken in herbruikbare declarations die scopes worden genoemd.<\/p>\n<p>Query scopes zijn methoden om database-logica aan een model toe te voegen en query logica te hergebruiken.<\/p>\n<p>Hieronder staat een voorbeeld van een query scope. Stel dat je een softwareontwikkelingsplatform voor je team wilt maken dat voltooide en lopende functies bijhoudt. Je kunt deze voorwaarde gebruiken om alleen de lopende functies op te halen:<\/p>\n<pre><code class=\"language-php\">$onGoing = Project::where('ongoing', 1)-&gt;get();<\/code><\/pre>\n<p>Je hebt deze voorwaarde misschien nodig op andere applicatiepagina&#8217;s, zoals de statistiekenpagina. Query scopes zorgen ervoor dat een pagina de bovenstaande conditie kan hergebruiken, waardoor je query eenvoudiger en je code schoner wordt.<\/p>\n<p>Hier zie je hoe je een query scope kunt gebruiken voor dit scenario:<\/p>\n<pre><code class=\"language-php\">class Features extends Model\n{\n    public function scopeOngoing($query)\n    {\n        return $query-&gt;where('ongoing', 0);\n    }\n}<\/code><\/pre>\n<p>Gebruik vervolgens de onderstaande code om die scope uit te voeren:<\/p>\n<pre><code class=\"language-php\">$onGoing = Feature::ongoing()-&gt;get();<\/code><\/pre>\n<p>Er zijn twee soorten scopes: globale en lokale.<\/p>\n<h3>Globale scopes<\/h3>\n<p>Met globale scopes kun je beperkingen toevoegen aan alle query&#8217;s binnen een model. Je kunt bijvoorbeeld een voorwaarde toevoegen om functies te filteren op basis van de naam van de team leader in alle query&#8217;s binnen je model.<\/p>\n<h3>Lokale scopes<\/h3>\n<p>Lokale scopes maken het mogelijk om veelvoorkomende constraints te defini\u00ebren voor herbruikbaarheid. Je kunt bijvoorbeeld willen dat de applicatie de functies retourneert die bugs hebben. Je code zou een lokale scope als deze kunnen gebruiken:<\/p>\n<pre><code class=\"language-php\">namespace AppModels;\nuse IlluminateDatabaseEloquentModel;\n\nclass User extends Model\n{\n    public function scopeBugged($query)\n    {\n        return $query-&gt;where('bugged', '&gt;', 1);\n    }\n}<\/code><\/pre>\n<p>De bovenstaande code retourneert alle functies die niet-opgeloste bugs hebben.<\/p>\n<h2>2. Eloquent relaties<\/h2>\n<p>Met relaties in Eloquent kun je verschillende tabellen gemakkelijk aan elkaar relateren. Een product op een e-commerce website kan bijvoorbeeld voorraad, prijs, weergaven en beoordelingen bevatten. Met Eloquent kun je deze relaties eenvoudig beheren, zelfs als hun records in verschillende tabellen staan.<\/p>\n<p>Je kunt relaties defini\u00ebren als methoden op model classes, net zoals je dat zou doen met een Eloquent model. Enkele veelgebruikte Eloquent relaties zijn one-to-one, inverse en polymorphic.<\/p>\n<h3>One-to-one<\/h3>\n<p>Hier is een voorbeeld van een eenvoudige one-to-one relatie die een productmodel koppelt aan een inventaris.<\/p>\n<pre><code class=\"language-php\">public function Inventory()\n{\n    return $this-&gt;hasOne('AppInventory');\n}<\/code><\/pre>\n<p>In de bovenstaande code callt de methode <code>Inventory()<\/code> de methode <code>hasOne()<\/code> op het productmodel. Hiermee wordt gecontroleerd of het product momenteel beschikbaar is.<\/p>\n<h3>Inverse<\/h3>\n<p>Met Eloquent kun je ook een inverse relatie maken. Bijvoorbeeld als je producten wilt ophalen op basis van het aantal weergaven. Inverse relaties kunnen je de producten geven die de meeste interesse wekken bij de bezoekers van een website. Je kunt de methode <code>belongsTo()<\/code> gebruiken, die het omgekeerde is van <code>hasOne()<\/code>. De code hieronder illustreert dit.<\/p>\n<pre><code class=\"language-php\">public function product()\n{\n    return $this-&gt;belongsTo('AppProduct');\n}<\/code><\/pre>\n<p>In de bovenstaande code koppelt Eloquent de <code>product_id<\/code> aan het aantal doorgegeven weergaven. De <code>product_id<\/code> kan dan helpen bij het ophalen van andere parameters, zoals prijs en voorraad.<\/p>\n<h3>Polymorphic<\/h3>\n<p>In applicatieontwikkeling zijn relaties niet altijd eenvoudig. Soms heb je een model dat tot meer dan \u00e9\u00e9n modeltype behoort. Product- en voorraadmodellen kunnen bijvoorbeeld beide polymorphic relaties hebben met een afbeeldingsmodel.<\/p>\n<p>Met <a href=\"https:\/\/kinsta.com\/nl\/blog\/laravel-relaties\/#polymorphic-relationships\">polymorphic relaties<\/a> zou je dezelfde lijst met afbeeldingen kunnen gebruiken voor zowel de inventaris als de producten. Hieronder zie je een codefragment dat een polymorphic relatie implementeert.<\/p>\n<pre><code class=\"language-php\">class Image extends Model\n{\n    \/**\n     * Getting the shared image.\n     *\/\n    public function myimage()\n    {\n        return $this-&gt;morphTo();\n    }\n}\n\nclass Product extends Model\n{\n    \/**\n     * Get the image to use on the product's page.\n     *\/\n    public function image()\n    {\n        return $this-&gt;morphOne(Image::class, 'myimage');\n    }\n}\n\nclass Inventory extends Model\n{\n    \/**\n     * Get the image to use on the inventory page.\n     *\/\n    public function image()\n    {\n        return $this-&gt;morphOne(Image::class, 'myimage');\n    }\n}<\/code><\/pre>\n<p>De bovenstaande code gebruikt de methode <code>morphTo()<\/code> om de parent van het polymorphic model op te halen.<\/p>\n<p>Dit is slechts het topje van de ijsberg over dit onderwerp. Zie voor meer onze gids voor gevorderden over <a href=\"https:\/\/kinsta.com\/nl\/blog\/laravel-relaties\/\">Laravel Eloquent relaties<\/a>.<\/p>\n<h2>3. Eloquent mutators en accessors<\/h2>\n<p>Met mutators en accessors kun je gegevens wijzigen terwijl je ze opslaat en ophaalt. Mutators wijzigen gegevens voordat ze worden opgeslagen, terwijl accessors gegevens wijzigen terwijl ze worden opgehaald.<\/p>\n<p>Als je namen in kleine letters wilt opslaan in je database, kun je een mutator maken om die transformatie uit te voeren. Als je de voor- en achternaam van een gebruiker als \u00e9\u00e9n naam wilt weergeven op je app pagina&#8217;s, kun je een accessor maken om dat te bereiken.<\/p>\n<p>Hieronder zie je een voorbeeld van een mutator die namen een hoofdletter geeft voordat je ze opslaat.<\/p>\n<pre><code class=\"language-php\">class User extends Model\n{\n    \/**\n     * Mutators capitalizing first and last name.\n     *\/\n    public function setFirstNameAttribute($value)\n    {\n        $this-&gt;attributes['first_name'] = ucfirst($value);\n    }\n\n    public function setLastNameAttribute($value)\n    {\n        $this-&gt;attributes['last_name'] = ucfirst($value);\n    }\n}<\/code><\/pre>\n<p>Hieronder zie je een voorbeeld van een accessor die de voor- en achternaam van de gebruiker combineert.<\/p>\n<pre><code class=\"language-php\">class User extends Model\n{\n    \/**\n     * Accessor combining both names.\n     *\/\n    public function getFullNameAttribute()\n    {\n        return ucfirst($this-&gt;first_name) . ' ' . ucfirst($this-&gt;last_name);\n    }\n}<\/code><\/pre>\n<h2>4. Eloquent collections<\/h2>\n<p>Collections in Eloquent behandelen methoden die meerdere modelresultaten teruggeven. Deze klasse is te vinden in <code>IlluminateDatabaseEloquentCollection<\/code>.<\/p>\n<p>Net als met arrays is het mogelijk om door collections te itereren. Hieronder staat een eenvoudige iteratie.<\/p>\n<pre><code class=\"language-php\">use AppModelsProduct;\n\n$products = Product::where('availability', 1)-&gt;get();\n\nforeach ($products as $product) {\n   echo $product-&gt;name;\n}<\/code><\/pre>\n<p>Collections zijn krachtiger dan matrices omdat je er complexere bewerkingen op kunt uitvoeren. Je kunt bijvoorbeeld de lijst met alle beschikbare producten weergeven en alle producten overslaan die niet &#8220;active&#8221; zijn<\/p>\n<pre><code class=\"language-php\">$names = Product::all()-&gt;reject(function ($product) {\n   return $product-&gt;active === false;\n})-&gt;map(function ($product) {\n   return $product-&gt;name;\n});<\/code><\/pre>\n<p>Hieronder staan enkele methoden die de klasse Collections biedt.<\/p>\n<h3>Contains<\/h3>\n<p>De methode <code>contains()<\/code> controleert of de code een gespecificeerde modus bevat, zoals te zien is in de onderstaande code:<\/p>\n<pre><code class=\"language-php\">$products-&gt;contains(1);\n$products-&gt;contains(Product::find(1));<\/code><\/pre>\n<h3>All<\/h3>\n<p>De methode <code>all()<\/code> retourneert de modellen in de collections, zoals hieronder getoond:<\/p>\n<pre><code class=\"language-php\">$collection = Product::all();<\/code><\/pre>\n<p>Veel andere methoden worden ondersteund door de <a href=\"https:\/\/laravel.com\/docs\/9.x\/eloquent-collections\" target=\"blank\" rel=\"noopener\">klasse collections<\/a>.<\/p>\n<h2>5. Eloquent modellen verwijderen<\/h2>\n<p>In Eloquent maak je modellen om te helpen bij het bouwen van queries. Soms moet je echter modellen verwijderen om een applicatie effici\u00ebnter te maken. Om dit te doen, roep je <code>delete<\/code> aan op de instantie van het model.<\/p>\n<pre><code class=\"language-php\">use AppModelsStock;\n\n$stock = Stock::find(1);\n$stock-&gt;delete();<\/code><\/pre>\n<p>De bovenstaande code verwijdert het model <code>Stock<\/code> uit een applicatie. Dit is een permanente verwijdering die niet ongedaan kan worden gemaakt.<\/p>\n<h3>Soft delete<\/h3>\n<p>Een andere functie die Eloquent bevat is de mogelijkheid tot een soft delete. Als je een model soft delete, verwijder je het niet uit de database.<\/p>\n<p>Je markeert het met <code>deleted_at<\/code> om de tijd en datum van de soft delete aan te geven. Dit is belangrijk als je een deel van de databaserecords wilt uitsluiten, zoals incomplete records, zonder ze permanent te verwijderen. Het helpt bij het opschonen van de query&#8217;s van Eloquent zonder extra voorwaarden toe te voegen.<\/p>\n<p>Je schakelt soft delete in door de property <code>softDeletes<\/code> toe te voegen aan een model en een kolom <code>deleted_at<\/code> toe te voegen aan de gerelateerde databasetabel.<\/p>\n<h3>Soft delete toevoegen aan een model<\/h3>\n<p>Je schakelt soft delete van modellen in door de property <code>IlluminateDatabaseEloquentSoftDeletes<\/code> toe te voegen, zoals hieronder getoond.<\/p>\n<pre><code class=\"language-php\">namespace AppModels;\nuse IlluminateDatabaseEloquentModel;\nuse IlluminateDatabaseEloquentSoftDeletes;\n\nclass Flight extends Model\n{\n   use SoftDeletes;\n}<\/code><\/pre>\n<h3>Een delete_at kolom toevoegen<\/h3>\n<p>Voordat je soft delete kunt gaan gebruiken, moet je database een <code>delete_at<\/code> kolom hebben. Je voegt deze kolom toe met behulp van een Laravel <code>Schema<\/code> builder helper methode, zoals hieronder getoond:<\/p>\n<pre><code class=\"language-php\">use IlluminateDatabaseSchemaBlueprint;\nuse IlluminateSupportFacadesSchema;\n\nSchema::table('users', function (Blueprint $table) {\n   $table-&gt;softDeletes();\n});\n\nSchema::table('users', function (Blueprint $table) {\n   $table-&gt;dropSoftDeletes();\n});<\/code><\/pre>\n<p>Hiermee voeg je een <code>delete_at<\/code> kolom toe die wordt bijgewerkt met de datum en tijd, in het geval van een succesvolle soft delete actie.<\/p>\n<h3>Soft-deleted modellen opnemen<\/h3>\n<p>Als je wilt dat de resultaten van een query ook soft-deleted modellen bevatten, voeg je de methode <code>withTrashed()<\/code> toe aan de query. Hieronder zie je een voorbeeld:<\/p>\n<pre><code class=\"language-php\">$stocks = Stock::withTrashed()-&gt;where('stock_id', 20)-&gt;get();<\/code><\/pre>\n<p>De bovenstaande query zal ook modellen met het <code>deleted_at<\/code> attribuut bevatten.<\/p>\n<h3>Alleen soft-deleted modellen ophalen<\/h3>\n<p>Met Eloquent kun je ook alleen soft-deleted modellen ophalen. Je kunt dit doen door bijvoorbeeld de methode <code>onlyTrashed()<\/code> aan te roepen:<\/p>\n<pre><code class=\"language-php\">$Stock = Stock::onlyTrashed()-&gt;where('stock_id', 1)-&gt;get();<\/code><\/pre>\n<h3>Soft-deleted modellen herstellen<\/h3>\n<p>Je kunt ook soft-deleted modellen herstellen door de methode <code>restore()<\/code> te callen.<\/p>\n<pre><code class=\"language-php\">$stocks = Stock::withTrashed()-&gt;where('stock_id', 20)-&gt;restore();<\/code><\/pre>\n<p>Hiermee wordt het veld <code>delete_at<\/code> van een soft-deleted model gewijzigd in null. Als het model niet zacht verwijderd is, blijft het veld ongewijzigd.<\/p>\n<h2>6. Elegant factories<\/h2>\n<p>Model factories in Laravel cre\u00ebren dummy gegevens die je kunt gebruiken om je applicatie te testen of om je database te vullen. Om dit te implementeren, maak je een model in een factory klasse, zoals in het onderstaande voorbeeld. Het codefragment maakt een model factory die dummy leveranciers van een product en zijn prijzen kan genereren.<\/p>\n<pre><code class=\"language-php\">namespace DatabaseFactories;\nuse IlluminateDatabaseEloquentFactoriesFactory;\nuse IlluminateSupportStr;\n\nclass StockFactory extends Factory\n{\n    public function definition()\n    {\n        return [\n            'supplier_name' =&gt; fake()-&gt;name(),\n            'price' =&gt; fake()-&gt;numberBetween($min = 1500, $max = 6000),\n        ];\n    }\n}<\/code><\/pre>\n<p>De methode <code>definition()<\/code> in het bovenstaande voorbeeld retourneert een set attribuutwaarden die Laravel gebruikt bij het bouwen van het model. De dummy helper helpt de fabriek om toegang te krijgen tot PHP&#8217;s bibliotheek, <a href=\"https:\/\/fakerphp.github.io\/\" target=\"blank\" rel=\"noopener\">Faker<\/a>.<\/p>\n<h2 id=\"h.kvdd4m1lmda5\">Samenvatting<\/h2>\n<p>Eloquent maakt het ontwikkelen van applicaties in Laravel eenvoudiger. Het is even effectief bij het bouwen van eenvoudige of complexe queries, dankzij zaken als relaties. De eenvoud van het genereren van functionele dummy data met behulp van factories maakt het perfect voor developers die robuuste tests willen maken voor hun applicaties. Bovendien helpen Eloquent scopes om complexe queries te vereenvoudigen op een manier die de code netjes houdt.<\/p>\n<p>Hoewel dit artikel slechts zes van de belangrijkste functies heeft besproken, heeft Eloquent nog andere krachtige functionaliteiten. Het gebruik van deelbare en herbruikbare modellen heeft van Eloquent een populaire functie gemaakt onder developers, en de eenvoud van Eloquent query&#8217;s maakt Laravel een developersvriendelijk framework &#8211; zelfs voor beginners.<\/p>\n<p>Wat je ervaringsniveau ook is, Kinsta&#8217;s <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Web Applicatie Hosting<\/a> platform ondersteunt developers zoals jij. Onze <a href=\"https:\/\/docs.sevalla.com\/templates\/overviewphp-examples#laravel\">Laravel Quickstart template<\/a> laat zien hoe eenvoudig het is om je applicatie aan de slag te krijgen op onze servers binnen het <a href=\"https:\/\/kinsta.com\/nl\/blog\/cloudplatform-voor-developers\/\">Premium Tier netwerk<\/a> van Google Cloud.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel is een open-source en eenvoudig te gebruiken PHP framework. Een van de krachtigste functies is Eloquent, een object-relationele mapper (ORM) die het verwerken van databaserecords &#8230;<\/p>\n","protected":false},"author":259,"featured_media":58329,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[866],"class_list":["post-58328","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Zes dingen die je moet weten om Laravel Eloquent onder de knie te krijgen - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Verbeter je Laravel vaardigheden Eloquent query scopes, relaties, mutators en accessors, collections, modelverwijdering en factories.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zes dingen die je moet weten om Laravel Eloquent beter te beheersen\" \/>\n<meta property=\"og:description\" content=\"Verbeter je Laravel vaardigheden Eloquent query scopes, relaties, mutators en accessors, collections, modelverwijdering en factories.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-04T16:49:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-24T21:38:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/02\/master-laravel-eloquent.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Steve Bonisteel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Verbeter je Laravel vaardigheden Eloquent query scopes, relaties, mutators en accessors, collections, modelverwijdering en factories.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/02\/master-laravel-eloquent.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"Zes dingen die je moet weten om Laravel Eloquent beter te beheersen\",\"datePublished\":\"2024-03-04T16:49:18+00:00\",\"dateModified\":\"2024-06-24T21:38:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/\"},\"wordCount\":1518,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/02\/master-laravel-eloquent-2.png\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/\",\"name\":\"Zes dingen die je moet weten om Laravel Eloquent onder de knie te krijgen - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/02\/master-laravel-eloquent-2.png\",\"datePublished\":\"2024-03-04T16:49:18+00:00\",\"dateModified\":\"2024-06-24T21:38:17+00:00\",\"description\":\"Verbeter je Laravel vaardigheden Eloquent query scopes, relaties, mutators en accessors, collections, modelverwijdering en factories.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/02\/master-laravel-eloquent-2.png\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/02\/master-laravel-eloquent-2.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Zes dingen die je moet weten om Laravel Eloquent beter te beheersen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"caption\":\"Steve Bonisteel\"},\"description\":\"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Zes dingen die je moet weten om Laravel Eloquent onder de knie te krijgen - Kinsta\u00ae","description":"Verbeter je Laravel vaardigheden Eloquent query scopes, relaties, mutators en accessors, collections, modelverwijdering en factories.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/","og_locale":"nl_NL","og_type":"article","og_title":"Zes dingen die je moet weten om Laravel Eloquent beter te beheersen","og_description":"Verbeter je Laravel vaardigheden Eloquent query scopes, relaties, mutators en accessors, collections, modelverwijdering en factories.","og_url":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2024-03-04T16:49:18+00:00","article_modified_time":"2024-06-24T21:38:17+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/02\/master-laravel-eloquent.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Verbeter je Laravel vaardigheden Eloquent query scopes, relaties, mutators en accessors, collections, modelverwijdering en factories.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/02\/master-laravel-eloquent.png","twitter_creator":"@Kinsta_NL","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Steve Bonisteel","Geschatte leestijd":"9 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"Zes dingen die je moet weten om Laravel Eloquent beter te beheersen","datePublished":"2024-03-04T16:49:18+00:00","dateModified":"2024-06-24T21:38:17+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/"},"wordCount":1518,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/02\/master-laravel-eloquent-2.png","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/","url":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/","name":"Zes dingen die je moet weten om Laravel Eloquent onder de knie te krijgen - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/02\/master-laravel-eloquent-2.png","datePublished":"2024-03-04T16:49:18+00:00","dateModified":"2024-06-24T21:38:17+00:00","description":"Verbeter je Laravel vaardigheden Eloquent query scopes, relaties, mutators en accessors, collections, modelverwijdering en factories.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/02\/master-laravel-eloquent-2.png","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/02\/master-laravel-eloquent-2.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-eloquent\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/"},{"@type":"ListItem","position":3,"name":"Zes dingen die je moet weten om Laravel Eloquent beter te beheersen"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","caption":"Steve Bonisteel"},"description":"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.","url":"https:\/\/kinsta.com\/nl\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/58328","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=58328"}],"version-history":[{"count":5,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/58328\/revisions"}],"predecessor-version":[{"id":59727,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/58328\/revisions\/59727"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58328\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58328\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58328\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58328\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58328\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58328\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58328\/translations\/es"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58328\/translations\/nl"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58328\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/58329"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=58328"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=58328"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=58328"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}