{"id":75924,"date":"2024-02-08T19:29:14","date_gmt":"2024-02-08T18:29:14","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=75924&#038;preview=true&#038;preview_id=75924"},"modified":"2024-06-03T20:53:14","modified_gmt":"2024-06-03T19:53:14","slug":"laravel-eloquent","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/","title":{"rendered":"Six choses \u00e0 savoir pour ma\u00eetriser Laravel Eloquent"},"content":{"rendered":"<p><a href=\"https:\/\/kinsta.com\/fr\/sujets\/laravel\/\">Laravel<\/a> est un <a href=\"https:\/\/kinsta.com\/fr\/blog\/frameworks-php\/\">framework PHP<\/a> open source et facile \u00e0 utiliser. L&rsquo;une de ses fonctionnalit\u00e9s les plus puissantes est Eloquent, un mappeur objet-relationnel (ORM) qui simplifie le traitement des enregistrements dans les bases de donn\u00e9es.<\/p>\n<p>Eloquent acc\u00e9l\u00e8re les op\u00e9rations de cr\u00e9ation, de lecture, de mise \u00e0 jour et de suppression d&rsquo;une base de donn\u00e9es \u00e0 partir d&rsquo;une application. Lorsque vous utilisez Eloquent, vous cr\u00e9ez des mod\u00e8les qui refl\u00e8tent les tables de la base de donn\u00e9es et vous utilisez ces mod\u00e8les pour cr\u00e9er vos requ\u00eates.<\/p>\n<p>Cet article examine six \u00e9l\u00e9ments de la fonctionnalit\u00e9 la plus puissante d&rsquo;Eloquent : les champs d&rsquo;application des requ\u00eates, les relations, les mutateurs et les accesseurs, les collections, la suppression des mod\u00e8les et les usines. Il d\u00e9crit le r\u00f4le de chaque fonctionnalit\u00e9 \u00e0 l&rsquo;aide d&rsquo;exemples pratiques. Nous esp\u00e9rons que vous pourrez utiliser ces exemples pour d\u00e9marrer votre ma\u00eetrise de <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. Port\u00e9e des requ\u00eates Eloquent<\/h2>\n<p>Lorsque vous construisez une application, vous rencontrez parfois des situations o\u00f9 vous utilisez des conditions plus d&rsquo;une fois. R\u00e9\u00e9crire le code dans chaque cas peut augmenter le risque d&rsquo;erreurs et rendre votre code d\u00e9sordonn\u00e9. Laravel r\u00e9sout ce probl\u00e8me en enveloppant ces conditions dans des d\u00e9clarations r\u00e9utilisables appel\u00e9es port\u00e9es ou scopes.<\/p>\n<p>Les scopes de requ\u00eate sont des m\u00e9thodes permettant d&rsquo;ajouter la logique de la base de donn\u00e9es \u00e0 un mod\u00e8le et de r\u00e9utiliser la logique de la requ\u00eate.<\/p>\n<p>Vous trouverez ci-dessous un exemple de champ d&rsquo;application de requ\u00eate. Supposons que vous souhaitiez cr\u00e9er une plateforme de d\u00e9veloppement de logiciels pour votre \u00e9quipe, qui assure le suivi des fonctionnalit\u00e9s achev\u00e9es et en cours. Vous pouvez utiliser cette condition pour r\u00e9cup\u00e9rer uniquement les fonctionnalit\u00e9s en cours :<\/p>\n<pre><code class=\"language-php\">$onGoing = Project::where('ongoing', 1)-&gt;get();<\/code><\/pre>\n<p>Vous pouvez avoir besoin de cette condition sur d&rsquo;autres pages de l&rsquo;application, telles que la page des statistiques. Les champs de requ\u00eate permettent \u00e0 une page de r\u00e9utiliser la condition ci-dessus, ce qui simplifie votre requ\u00eate et rend votre code plus propre.<\/p>\n<p>Voici comment vous pouvez utiliser une port\u00e9e de requ\u00eate pour ce sc\u00e9nario :<\/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>Utilisez ensuite le code ci-dessous pour ex\u00e9cuter cette port\u00e9e :<\/p>\n<pre><code class=\"language-php\">$onGoing = Feature::ongoing()-&gt;get();<\/code><\/pre>\n<p>Il existe deux types de champs d&rsquo;application : les champs d&rsquo;application globaux et les champs d&rsquo;application locaux.<\/p>\n<h3>Port\u00e9es globales<\/h3>\n<p>Les port\u00e9es globales permettent d&rsquo;ajouter des contraintes \u00e0 toutes les requ\u00eates d&rsquo;un mod\u00e8le. Par exemple, vous pouvez ajouter une condition pour filtrer les caract\u00e9ristiques en fonction du nom du chef d&rsquo;\u00e9quipe dans toutes les requ\u00eates de votre mod\u00e8le.<\/p>\n<h3>Port\u00e9es locales<\/h3>\n<p>Les champs d&rsquo;application locaux permettent de d\u00e9finir des contraintes communes \u00e0 des fins de r\u00e9utilisation. Par exemple, vous pouvez vouloir que l&rsquo;application renvoie les caract\u00e9ristiques qui ont des bogues. Votre code pourrait mettre en \u0153uvre une port\u00e9e locale comme suit :<\/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>Le code ci-dessus renvoie toutes les fonctionnalit\u00e9s qui ont des bogues non corrig\u00e9s.<\/p>\n<h2>2. Relations Eloquent<\/h2>\n<p>Les relations dans Eloquent vous permettent de relier facilement diff\u00e9rentes tables. Par exemple, un produit sur un site de commerce \u00e9lectronique peut avoir un inventaire, un prix, des vues et des commentaires. Avec Eloquent, vous pouvez facilement g\u00e9rer ces relations m\u00eame si leurs enregistrements se trouvent dans des tables diff\u00e9rentes.<\/p>\n<p>Vous pouvez d\u00e9finir les relations comme des m\u00e9thodes sur les classes de mod\u00e8le, tout comme vous le feriez pour un mod\u00e8le Eloquent. Parmi les relations Eloquent couramment utilis\u00e9es, citons les relations univoques, inverses et polymorphes.<\/p>\n<h3>Un \u00e0 un<\/h3>\n<p>Voici un exemple de relation univoque de base qui associe un mod\u00e8le de produit \u00e0 un inventaire.<\/p>\n<pre><code class=\"language-php\">public function Inventory()\n{\n    return $this-&gt;hasOne('AppInventory');\n}<\/code><\/pre>\n<p>Dans le code ci-dessus, la m\u00e9thode <code>Inventory()<\/code> appelle la m\u00e9thode <code>hasOne()<\/code> sur le mod\u00e8le de produit. Cette m\u00e9thode v\u00e9rifie si le produit est actuellement disponible.<\/p>\n<h3>Inverse<\/h3>\n<p>Eloquent vous permet \u00e9galement de cr\u00e9er une relation inverse. Par exemple, lorsque vous souhaitez r\u00e9cup\u00e9rer des produits en fonction de leur nombre de vues. Les relations inverses peuvent vous donner les produits qui suscitent le plus d&rsquo;int\u00e9r\u00eat de la part des visiteurs d&rsquo;un site web. Vous pouvez utiliser la m\u00e9thode <code>belongsTo()<\/code>, qui est l&rsquo;inverse de <code>hasOne()<\/code>. Le code ci-dessous l&rsquo;illustre.<\/p>\n<pre><code class=\"language-php\">public function product()\n{\n    return $this-&gt;belongsTo('AppProduct');\n}<\/code><\/pre>\n<p>Dans le code ci-dessus, Eloquent fait correspondre le <code>product_id<\/code> au nombre de vues transmises. Le <code>product_id<\/code> peut alors aider \u00e0 r\u00e9cup\u00e9rer d&rsquo;autres param\u00e8tres, tels que le prix et l&rsquo;inventaire.<\/p>\n<h3>Polymorphe<\/h3>\n<p>Dans le d\u00e9veloppement d&rsquo;applications, les relations ne sont pas toujours simples. Parfois, vous avez un mod\u00e8le qui appartient \u00e0 plus d&rsquo;un type de mod\u00e8le. Par exemple, les mod\u00e8les de produit et d&rsquo;inventaire peuvent tous deux avoir des relations polymorphes avec un mod\u00e8le d&rsquo;image.<\/p>\n<p>Les <a href=\"https:\/\/kinsta.com\/fr\/blog\/relations-laravel-eloquent\/#polymorphic-relationships\">relations polymorphes<\/a> vous permettent d&rsquo;utiliser la m\u00eame liste d&rsquo;images pour l&rsquo;inventaire et les produits. Vous trouverez ci-dessous un extrait de code mettant en \u0153uvre une relation polymorphe.<\/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>Le code ci-dessus utilise la m\u00e9thode <code>morphTo()<\/code> pour r\u00e9cup\u00e9rer le parent du mod\u00e8le polymorphe.<\/p>\n<p>Ce n&rsquo;est que la partie \u00e9merg\u00e9e de l&rsquo;iceberg sur ce sujet. Pour en savoir plus, consultez notre guide avanc\u00e9 sur les <a href=\"https:\/\/kinsta.com\/fr\/blog\/relations-laravel-eloquent\/\">relations Laravel Eloquent<\/a>.<\/p>\n<h2>3. Mutateurs et accesseurs Eloquent<\/h2>\n<p>Les mutateurs et les accesseurs vous permettent de modifier les donn\u00e9es tout en les stockant et en les r\u00e9cup\u00e9rant. Les mutateurs modifient les donn\u00e9es avant de les enregistrer, tandis que les accesseurs les modifient lors de leur r\u00e9cup\u00e9ration.<\/p>\n<p>Si vous souhaitez stocker les noms en minuscules dans votre base de donn\u00e9es, vous pouvez cr\u00e9er un mutateur pour ex\u00e9cuter cette transformation. Si vous souhaitez afficher le pr\u00e9nom et le nom de l&rsquo;utilisateur en un seul nom sur les pages de votre application, vous pouvez cr\u00e9er un accesseur pour y parvenir.<\/p>\n<p>Vous trouverez ci-dessous un exemple de mutateur qui met les noms en majuscules avant de les enregistrer.<\/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>Vous trouverez ci-dessous un exemple d&rsquo;accesseur qui combine le pr\u00e9nom et le nom de l&rsquo;utilisateur.<\/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. Collections Eloquent<\/h2>\n<p>Les collections Eloquent g\u00e8rent les m\u00e9thodes qui renvoient plusieurs r\u00e9sultats de mod\u00e8les. Cette classe se trouve \u00e0 l&rsquo;adresse <code>IlluminateDatabaseEloquentCollection<\/code>.<\/p>\n<p>Comme pour les tableaux, il est possible d&rsquo;it\u00e9rer dans les collections. Vous trouverez ci-dessous une it\u00e9ration simple.<\/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>Les collections sont plus puissantes que les tableaux, car elles permettent d&rsquo;effectuer des op\u00e9rations plus complexes. Par exemple, vous pouvez afficher la liste de tous les produits disponibles et ignorer tous ceux qui ne sont pas \u00ab actifs \u00bb<\/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>Vous trouverez ci-dessous quelques-unes des m\u00e9thodes propos\u00e9es par la classe des collections.<\/p>\n<h3>Contient<\/h3>\n<p>La m\u00e9thode <code>contains()<\/code> v\u00e9rifie si le code contient un mode sp\u00e9cifi\u00e9, comme le montre le code ci-dessous :<\/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>La m\u00e9thode <code>all()<\/code> renvoie les mod\u00e8les contenus dans la collection, comme indiqu\u00e9 ci-dessous :<\/p>\n<pre><code class=\"language-php\">$collection = Product::all();<\/code><\/pre>\n<p>De nombreuses autres m\u00e9thodes sont prises en charge par la <a href=\"https:\/\/laravel.com\/docs\/9.x\/eloquent-collections\" target=\"blank\" rel=\"noopener\">classe collections<\/a>.<\/p>\n<h2>5. Supprimer des mod\u00e8les Eloquent<\/h2>\n<p>Dans Eloquent, vous cr\u00e9ez des mod\u00e8les pour vous aider \u00e0 construire des requ\u00eates. Cependant, il est parfois n\u00e9cessaire de supprimer des mod\u00e8les pour rendre une application plus efficace. Pour cela, appelez <code>delete<\/code> sur l&rsquo;instance du mod\u00e8le.<\/p>\n<pre><code class=\"language-php\">use AppModelsStock;\n\n$stock = Stock::find(1);\n$stock-&gt;delete();<\/code><\/pre>\n<p>Le code ci-dessus supprime le mod\u00e8le <code>Stock<\/code> d&rsquo;une application. Il s&rsquo;agit d&rsquo;une suppression permanente qui ne peut \u00eatre annul\u00e9e.<\/p>\n<h3>Suppression en douceur<\/h3>\n<p>Une autre fonctionnalit\u00e9 d&rsquo;Eloquent est la possibilit\u00e9 de supprimer un mod\u00e8le en douceur. Lorsque vous supprimez un mod\u00e8le, vous ne le supprimez pas de la base de donn\u00e9es.<\/p>\n<p>Vous le marquez en utilisant <code>deleted_at<\/code> pour indiquer l&rsquo;heure et la date de l&rsquo;effacement. Cette fonction est importante lorsque vous souhaitez exclure une partie des enregistrements de la base de donn\u00e9es, tels que ceux qui sont incomplets, sans les supprimer d\u00e9finitivement. Elle permet de nettoyer les r\u00e9sultats des requ\u00eates d&rsquo;Eloquent sans ajouter de conditions suppl\u00e9mentaires.<\/p>\n<p>Vous activez la suppression douce en ajoutant le trait <code>softDeletes<\/code> \u00e0 un mod\u00e8le et en ajoutant une colonne <code>deleted_at<\/code> \u00e0 la table de base de donn\u00e9es correspondante.<\/p>\n<h3>Ajout de la suppression douce \u00e0 un mod\u00e8le<\/h3>\n<p>Vous activez les suppressions douces dans un mod\u00e8le en ajoutant le trait <code>IlluminateDatabaseEloquentSoftDeletes<\/code>, comme illustr\u00e9 ci-dessous.<\/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>Comment ajouter une colonne delete_at<\/h3>\n<p>Avant de pouvoir utiliser l&rsquo;effacement progressif, votre base de donn\u00e9es doit comporter une colonne <code>delete_at<\/code>. Vous ajoutez cette colonne \u00e0 l&rsquo;aide d&rsquo;une m\u00e9thode Laravel <code>Schema<\/code> builder helper, comme indiqu\u00e9 ci-dessous :<\/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>Cette m\u00e9thode ajoute une colonne <code>delete_at<\/code> qui est mise \u00e0 jour avec la date et l&rsquo;heure, dans le cas d&rsquo;une action de suppression douce r\u00e9ussie.<\/p>\n<h3>Comment inclure les mod\u00e8les supprim\u00e9s<\/h3>\n<p>Si vous souhaitez que les r\u00e9sultats de la requ\u00eate incluent les mod\u00e8les supprim\u00e9s \u00e0 l&rsquo;amiable, vous devez ajouter la m\u00e9thode <code>withTrashed()<\/code> \u00e0 la requ\u00eate. Un exemple est pr\u00e9sent\u00e9 ci-dessous :<\/p>\n<pre><code class=\"language-php\">$stocks = Stock::withTrashed()-&gt;where('stock_id', 20)-&gt;get();<\/code><\/pre>\n<p>La requ\u00eate ci-dessus inclura \u00e9galement les mod\u00e8les avec l&rsquo;attribut <code>deleted_at<\/code>.<\/p>\n<h3>Comment r\u00e9cup\u00e9rer uniquement les mod\u00e8les supprim\u00e9s par voie \u00e9lectronique ?<\/h3>\n<p>Eloquent vous permet \u00e9galement de r\u00e9cup\u00e9rer exclusivement les mod\u00e8les supprim\u00e9s. Vous pouvez le faire en appelant la m\u00e9thode <code>onlyTrashed()<\/code>, par exemple :<\/p>\n<pre><code class=\"language-php\">$Stock = Stock::onlyTrashed()-&gt;where('stock_id', 1)-&gt;get();<\/code><\/pre>\n<h3>Comment restaurer des mod\u00e8les supprim\u00e9s<\/h3>\n<p>Vous pouvez \u00e9galement restaurer des mod\u00e8les supprim\u00e9s en appelant la m\u00e9thode <code>restore()<\/code>.<\/p>\n<pre><code class=\"language-php\">$stocks = Stock::withTrashed()-&gt;where('stock_id', 20)-&gt;restore();<\/code><\/pre>\n<p>Cette m\u00e9thode remplace le champ <code>delete_at<\/code> d&rsquo;un mod\u00e8le supprim\u00e9 par d\u00e9faut par le champ null. Si le mod\u00e8le n&rsquo;a pas \u00e9t\u00e9 supprim\u00e9, le champ reste inchang\u00e9.<\/p>\n<h2>6. Usines Eloquent<\/h2>\n<p>Les usines de mod\u00e8les de Laravel cr\u00e9ent des donn\u00e9es fictives que vous pouvez utiliser pour tester votre application ou pour alimenter votre base de donn\u00e9es. Pour cela, vous devez cr\u00e9er un mod\u00e8le dans une classe de fabrique, comme le montre l&rsquo;exemple ci-dessous. L&rsquo;extrait de code cr\u00e9e une fabrique de mod\u00e8les qui peut g\u00e9n\u00e9rer de faux fournisseurs d&rsquo;un produit et de ses prix.<\/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>La m\u00e9thode <code>definition()<\/code> dans l&rsquo;exemple ci-dessus renvoie un ensemble de valeurs d&rsquo;attributs que Laravel utilise lors de la construction du mod\u00e8le. L&rsquo;aide \u00e0 la cr\u00e9ation de faux permet \u00e0 la fabrique d&rsquo;acc\u00e9der \u00e0 la biblioth\u00e8que PHP <a href=\"https:\/\/fakerphp.github.io\/\" target=\"blank\" rel=\"noopener\">Faker<\/a>.<\/p>\n<h2 id=\"h.kvdd4m1lmda5\">En r\u00e9sum\u00e9<\/h2>\n<p>Eloquent simplifie les t\u00e2ches de d\u00e9veloppement d&rsquo;applications dans Laravel. Il est aussi efficace pour construire des requ\u00eates simples que complexes, gr\u00e2ce \u00e0 des impl\u00e9mentations telles que les relations. La simplicit\u00e9 de g\u00e9n\u00e9ration de donn\u00e9es factices fonctionnelles \u00e0 l&rsquo;aide de factories le rend parfait pour les d\u00e9veloppeurs qui veulent cr\u00e9er des tests robustes pour leurs applications. De plus, les scopes d&rsquo;Eloquent aident \u00e0 simplifier les requ\u00eates complexes d&rsquo;une mani\u00e8re qui laisse le code propre.<\/p>\n<p>Bien que cet article n&rsquo;ait couvert que six de ses principales caract\u00e9ristiques, Eloquent poss\u00e8de d&rsquo;autres fonctionnalit\u00e9s puissantes. L&rsquo;utilisation de mod\u00e8les partageables et r\u00e9utilisables a fait d&rsquo;Eloquent une fonctionnalit\u00e9 populaire parmi les d\u00e9veloppeurs, et la simplicit\u00e9 des requ\u00eates Eloquent fait de Laravel un framework convivial pour les d\u00e9veloppeurs, m\u00eame pour les d\u00e9butants.<\/p>\n<p>Quel que soit votre niveau d&rsquo;exp\u00e9rience, la plateforme d&rsquo;<a href=\"https:\/\/sevalla.com\/application-hosting\/\">h\u00e9bergement d&rsquo;applications web<\/a> de Kinsta soutient les d\u00e9veloppeurs comme vous. Notre <a href=\"https:\/\/docs.sevalla.com\/templates\/overviewphp-examples#laravel\">mod\u00e8le de d\u00e9marrage rapide Laravel<\/a> montre \u00e0 quel point il est facile de mettre en place votre application et de la faire fonctionner sur nos serveurs au sein du <a href=\"https:\/\/kinsta.com\/fr\/blog\/plateforme-cloud-pour-developpeurs\/\">r\u00e9seau premium<\/a> de Google Cloud.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel est un framework PHP open source et facile \u00e0 utiliser. L&rsquo;une de ses fonctionnalit\u00e9s les plus puissantes est Eloquent, un mappeur objet-relationnel (ORM) qui simplifie &#8230;<\/p>\n","protected":false},"author":259,"featured_media":75925,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[986],"class_list":["post-75924","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>Six choses que vous devez savoir pour ma\u00eetriser Laravel Eloquent - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Am\u00e9liorez vos comp\u00e9tences Laravel avec Eloquent query scopes, relationships, mutators and accessors, collections, model deletion, and 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\/fr\/blog\/laravel-eloquent\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Six choses \u00e0 savoir pour ma\u00eetriser Laravel Eloquent\" \/>\n<meta property=\"og:description\" content=\"Am\u00e9liorez vos comp\u00e9tences Laravel avec Eloquent query scopes, relationships, mutators and accessors, collections, model deletion, and factories.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-08T18:29:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-03T19:53:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/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=\"Am\u00e9liorez vos comp\u00e9tences Laravel avec Eloquent query scopes, relationships, mutators and accessors, collections, model deletion, and factories.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/02\/master-laravel-eloquent.png\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"Six choses \u00e0 savoir pour ma\u00eetriser Laravel Eloquent\",\"datePublished\":\"2024-02-08T18:29:14+00:00\",\"dateModified\":\"2024-06-03T19:53:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/\"},\"wordCount\":1949,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/02\/master-laravel-eloquent.png\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/\",\"name\":\"Six choses que vous devez savoir pour ma\u00eetriser Laravel Eloquent - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/02\/master-laravel-eloquent.png\",\"datePublished\":\"2024-02-08T18:29:14+00:00\",\"dateModified\":\"2024-06-03T19:53:14+00:00\",\"description\":\"Am\u00e9liorez vos comp\u00e9tences Laravel avec Eloquent query scopes, relationships, mutators and accessors, collections, model deletion, and factories.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/02\/master-laravel-eloquent.png\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/02\/master-laravel-eloquent.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Six choses \u00e0 savoir pour ma\u00eetriser Laravel Eloquent\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"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\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/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\/fr\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Six choses que vous devez savoir pour ma\u00eetriser Laravel Eloquent - Kinsta\u00ae","description":"Am\u00e9liorez vos comp\u00e9tences Laravel avec Eloquent query scopes, relationships, mutators and accessors, collections, model deletion, and 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\/fr\/blog\/laravel-eloquent\/","og_locale":"fr_FR","og_type":"article","og_title":"Six choses \u00e0 savoir pour ma\u00eetriser Laravel Eloquent","og_description":"Am\u00e9liorez vos comp\u00e9tences Laravel avec Eloquent query scopes, relationships, mutators and accessors, collections, model deletion, and factories.","og_url":"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2024-02-08T18:29:14+00:00","article_modified_time":"2024-06-03T19:53:14+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/02\/master-laravel-eloquent.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Am\u00e9liorez vos comp\u00e9tences Laravel avec Eloquent query scopes, relationships, mutators and accessors, collections, model deletion, and factories.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/02\/master-laravel-eloquent.png","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Steve Bonisteel","Dur\u00e9e de lecture estim\u00e9e":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"Six choses \u00e0 savoir pour ma\u00eetriser Laravel Eloquent","datePublished":"2024-02-08T18:29:14+00:00","dateModified":"2024-06-03T19:53:14+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/"},"wordCount":1949,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/02\/master-laravel-eloquent.png","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/","url":"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/","name":"Six choses que vous devez savoir pour ma\u00eetriser Laravel Eloquent - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/02\/master-laravel-eloquent.png","datePublished":"2024-02-08T18:29:14+00:00","dateModified":"2024-06-03T19:53:14+00:00","description":"Am\u00e9liorez vos comp\u00e9tences Laravel avec Eloquent query scopes, relationships, mutators and accessors, collections, model deletion, and factories.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/02\/master-laravel-eloquent.png","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/02\/master-laravel-eloquent.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-eloquent\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/fr\/sujets\/laravel\/"},{"@type":"ListItem","position":3,"name":"Six choses \u00e0 savoir pour ma\u00eetriser Laravel Eloquent"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","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\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/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\/fr\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/75924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=75924"}],"version-history":[{"count":4,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/75924\/revisions"}],"predecessor-version":[{"id":77219,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/75924\/revisions\/77219"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75924\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75924\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75924\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75924\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75924\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75924\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75924\/translations\/es"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75924\/translations\/nl"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75924\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/75925"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=75924"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=75924"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=75924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}