{"id":76445,"date":"2024-02-08T19:32:01","date_gmt":"2024-02-08T18:32:01","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=76445&#038;preview=true&#038;preview_id=76445"},"modified":"2024-04-22T20:01:31","modified_gmt":"2024-04-22T19:01:31","slug":"laravel-eloquent","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/","title":{"rendered":"Sei cose da sapere per usare al meglio Laravel Eloquent"},"content":{"rendered":"<p><a href=\"https:\/\/kinsta.com\/it\/argomenti\/laravel\/\">Laravel<\/a> \u00e8 un <a href=\"https:\/\/kinsta.com\/it\/blog\/framework-php\/\">framework PHP<\/a> open-source e facile da usare. Una delle sue caratteristiche pi\u00f9 potenti \u00e8 Eloquent, un ORM (object-relational mapper) che semplifica la gestione dei record del database.<\/p>\n<p>Eloquent velocizza le operazioni di creazione, lettura, aggiornamento e cancellazione di un database da un&#8217;applicazione. Quando usiamo Eloquent, creiamo dei modelli che rispecchiano le tabelle del database e utilizziamo questi modelli per creare le nostre query.<\/p>\n<p>Questo articolo esamina sei elementi delle funzionalit\u00e0 pi\u00f9 potenti di Eloquent: i query scope, le relazioni, i mutator e gli accessor, le collection, la cancellazione dei modelli e le factory. Questo articolo illustra ciascuna funzionalit\u00e0 con esempi pratici. Speriamo che questi esempi vi aiuteranno a sfruttare al meglio <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. Query scope di Eloquent<\/h2>\n<p>Quando si crea un&#8217;applicazione, a volte ci si trova in situazioni in cui si usano le condizioni pi\u00f9 di una volta. Riscrivere il codice in ogni caso pu\u00f2 aumentare la possibilit\u00e0 di errori e rendere il codice poco ordinato. Laravel risolve questo problema avvolgendo tali condizioni in dichiarazioni riutilizzabili chiamate scope.<\/p>\n<p>I query scope sono metodi per aggiungere la logica del database a un modello e riutilizzare la logica della query.<\/p>\n<p>Di seguito \u00e8 riportato un esempio di query scope. Supponiamo che di voler creare una piattaforma di sviluppo software per il nostro team che tenga traccia delle funzionalit\u00e0 completate e in corso. Possiamo utilizzare questa condizione per recuperare solo le funzionalit\u00e0 in corso:<\/p>\n<pre><code class=\"language-php\">$onGoing = Project::where('ongoing', 1)-&gt;get();<\/code><\/pre>\n<p>Potremmo aver bisogno di questa condizione in altre pagine dell&#8217;applicazione, come ad esempio la pagina delle statistiche. I query scope consentono a una pagina di riutilizzare la condizione precedente, semplificando la query e rendendo il codice pi\u00f9 pulito.<\/p>\n<p>Ecco come utilizzare un query scope per questo 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>Quindi utilizziamo il codice sottostante per eseguire lo scope:<\/p>\n<pre><code class=\"language-php\">$onGoing = Feature::ongoing()-&gt;get();<\/code><\/pre>\n<p>Esistono due tipi di scope: globali e locali.<\/p>\n<h3>Scope globali<\/h3>\n<p>Gli scope globali consentono di aggiungere vincoli a tutte le query di un modello. Ad esempio, possiamo aggiungere una condizione per filtrare le caratteristiche in base al nome del team leader in tutte le query del modello.<\/p>\n<h3>Scope locali<\/h3>\n<p>Gli scope locali consentono di definire vincoli comuni per la riutilizzabilit\u00e0. Ad esempio, potremmo volere che l&#8217;applicazione restituisca le caratteristiche che presentano bug. Il codice potrebbe implementare uno scope locale come questo:<\/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>Il codice precedente restituisce tutte le funzioni che presentano bug non risolti.<\/p>\n<h2>2. Relazioni in Eloquent<\/h2>\n<p>Le relazioni in Eloquent permettono di mettere in relazione diverse tabelle in modo semplice. Ad esempio, un prodotto su un sito web di e-commerce pu\u00f2 avere inventario, prezzo, visualizzazioni e recensioni. Con Eloquent possiamo gestire facilmente queste relazioni anche se i loro record si trovano in tabelle diverse.<\/p>\n<p>Possiamo definire le relazioni come metodi sulle classi del modello, proprio come faremmo con un modello Eloquent. Alcune relazioni comunemente utilizzate in Eloquent sono quelle uno-a-uno, inverse e polimorfiche.<\/p>\n<h3>Uno-a-uno<\/h3>\n<p>Ecco un esempio di relazione uno-a-uno che associa un modello di prodotto a un inventario.<\/p>\n<pre><code class=\"language-php\">public function Inventory()\n{\n    return $this-&gt;hasOne('AppInventory');\n}<\/code><\/pre>\n<p>Nel codice qui sopra, il metodo <code>Inventory()<\/code> chiama il metodo <code>hasOne()<\/code> sul modello di prodotto. Questo metodo verifica se il prodotto \u00e8 attualmente disponibile.<\/p>\n<h3>Inversa<\/h3>\n<p>Eloquent permette anche di creare una relazione inversa. Ad esempio, quando vogliamo recuperare i prodotti in base al loro numero di visualizzazioni. Le relazioni inverse possono fornire i prodotti che suscitano il maggior interesse da parte dei visitatori di un sito web. Possiamo utilizzare il metodo <code>belongsTo()<\/code>, che \u00e8 l&#8217;inverso di <code>hasOne()<\/code>. Il codice sottostante lo illustra.<\/p>\n<pre><code class=\"language-php\">public function product()\n{\n    return $this-&gt;belongsTo('AppProduct');\n}<\/code><\/pre>\n<p>Nel codice qui sopra, Eloquent abbina il metodo <code>product_id<\/code> al numero di visualizzazioni passate. Il metodo <code>product_id<\/code> pu\u00f2 aiutare a recuperare altri parametri, come il prezzo e l&#8217;inventario.<\/p>\n<h3>Polimorfica<\/h3>\n<p>Nello sviluppo di un&#8217;applicazione, le relazioni non sono sempre semplici. A volte un modello appartiene a pi\u00f9 di un tipo di modello. Ad esempio, i modelli di prodotto e di inventario possono avere entrambi relazioni polimorfiche con un modello di immagine.<\/p>\n<p>Le <a href=\"https:\/\/kinsta.com\/it\/blog\/relazioni-laravel\/#polymorphic-relationships\">relazioni polimorfiche<\/a> permettono di utilizzare lo stesso elenco di immagini sia per l&#8217;inventario che per i prodotti. Di seguito troviamo un frammento di codice che implementa una relazione polimorfica.<\/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>Il codice qui sopra utilizza il metodo <code>morphTo()<\/code> per recuperare il genitore del modello polimorfico.<\/p>\n<p>Questa \u00e8 solo la punta dell&#8217;iceberg di questo argomento. Per saperne di pi\u00f9, consultate la nostra guida avanzata alle <a href=\"https:\/\/kinsta.com\/it\/blog\/relazioni-laravel\/\">relazioni di Laravel Eloquent<\/a>.<\/p>\n<h2>3. Mutator e accessor di Eloquent<\/h2>\n<p>I mutator e gli accessor permettono di modificare i dati durante la memorizzazione e il recupero. I mutator modificano i dati prima di salvarli, mentre gli accessor li modificano mentre li recuperano.<\/p>\n<p>Se vogliamo memorizzare i nomi in minuscolo nel database, possiamo creare un mutator per eseguire questa trasformazione. Se vogliamo visualizzare il nome e il cognome dell&#8217;utente come un unico nome nelle pagine dell&#8217;applicazione, possiamo creare un accessor per farlo.<\/p>\n<p>Ecco un esempio di mutator che rende maiuscoli i nomi prima di salvarli.<\/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>Ecco un esempio di un accessor che combina il nome e il cognome dell&#8217;utente.<\/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. Collection di Eloquent<\/h2>\n<p>Le collection di Eloquent gestiscono i metodi che restituiscono i risultati di pi\u00f9 modelli. Questa classe si trova in <code>IlluminateDatabaseEloquentCollection<\/code>.<\/p>\n<p>Come per gli array, \u00e8 possibile iterare le collection. Di seguito \u00e8 riportata una semplice iterazione.<\/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>Le collection sono pi\u00f9 potenti degli array perch\u00e9 possiamo eseguire operazioni pi\u00f9 complesse su di esse. Ad esempio, possiamo visualizzare l&#8217;elenco di tutti i prodotti disponibili e saltare quelli che non sono &#8220;attivi&#8221;.<\/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>Di seguito sono elencati alcuni dei metodi che la classe collection mette a disposizione.<\/p>\n<h3>Contains<\/h3>\n<p>Il metodo <code>contains()<\/code> verifica se il codice contiene una modalit\u00e0 specificata, come mostrato nel codice seguente:<\/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>Il metodo <code>all()<\/code> restituisce i modelli contenuti nella collection, come mostrato di seguito:<\/p>\n<pre><code class=\"language-php\">$collection = Product::all();<\/code><\/pre>\n<p>Molti altri metodi sono supportati dalla <a href=\"https:\/\/laravel.com\/docs\/9.x\/eloquent-collections\" target=\"blank\" rel=\"noopener\">classe collections<\/a>.<\/p>\n<h2>5. Cancellare i modelli in Eloquent<\/h2>\n<p>In Eloquent creiamo dei modelli che ci aiutano a costruire le query. Tuttavia, a volte \u00e8 necessario eliminare i modelli per rendere pi\u00f9 efficiente un&#8217;applicazione. Per farlo, chiamiamo <code>delete<\/code> sull&#8217;istanza del modello.<\/p>\n<pre><code class=\"language-php\">use AppModelsStock;\n\n$stock = Stock::find(1);\n$stock-&gt;delete();<\/code><\/pre>\n<p>Il codice qui sopra rimuove il modello <code>Stock<\/code> da un&#8217;applicazione. Si tratta di una rimozione permanente che non pu\u00f2 essere annullata.<\/p>\n<h3>Soft delete<\/h3>\n<p>Un&#8217;altra funzione di Eloquent \u00e8 il soft delete, la cancellazione &#8220;morbida&#8221;, del modello. Quando si elimina un modello, non lo si rimuove dal database.<\/p>\n<p>Lo segnaliamo utilizzando <code>deleted_at<\/code> per indicare l&#8217;ora e la data dell&#8217;eliminazione. \u00c8 utile quando vogliamo escludere una parte dei record del database, ad esempio quelli incompleti, senza rimuoverli definitivamente. Aiuta a ripulire i risultati delle query di Eloquent senza aggiungere ulteriori condizioni.<\/p>\n<p>Possiamo attivare il soft delete aggiungendo il tratto <code>softDeletes<\/code> a un modello e aggiungendo una colonna <code>deleted_at<\/code> alla tabella del database correlata.<\/p>\n<h3>Aggiungere soft delete a un modello<\/h3>\n<p>Possiamo attivare soft delete in un modello aggiungendo il tratto <code>IlluminateDatabaseEloquentSoftDeletes<\/code>, come mostrato di seguito.<\/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>Come aggiungere una colonna delete_at<\/h3>\n<p>Prima di poter iniziare a usare soft delete, il database deve avere una colonna <code>delete_at<\/code>. Possiamo aggiungere questa colonna utilizzando un metodo builder helper di Laravel <code>Schema<\/code>, come mostrato di seguito:<\/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>In questo modo si aggiunge una colonna <code>delete_at<\/code> che viene aggiornata con la data e l&#8217;ora in caso di successo di un&#8217;azione di soft delete.<\/p>\n<h3>Come includere i modelli cancellati<\/h3>\n<p>Se vogliamo che i risultati delle query includano i modelli eliminati in modo soft, dovremo aggiungere il metodo <code>withTrashed()<\/code> alla query. Un esempio \u00e8 mostrato di seguito:<\/p>\n<pre><code class=\"language-php\">$stocks = Stock::withTrashed()-&gt;where('stock_id', 20)-&gt;get();<\/code><\/pre>\n<p>La query di cui sopra includer\u00e0 anche i modelli con l&#8217;attributo <code>deleted_at<\/code>.<\/p>\n<h3>Come recuperare solo i modelli eliminati in modo soft<\/h3>\n<p>Eloquent permette anche di recuperare esclusivamente i modelli cancellati in modo soft. Possiamo farlo chiamando il metodo <code>onlyTrashed()<\/code>, ad esempio:<\/p>\n<pre><code class=\"language-php\">$Stock = Stock::onlyTrashed()-&gt;where('stock_id', 1)-&gt;get();<\/code><\/pre>\n<h3>Come ripristinare i modelli eliminati<\/h3>\n<p>Possiamo anche ripristinare i modelli eliminati in modo soft chiamando il metodo <code>restore()<\/code>.<\/p>\n<pre><code class=\"language-php\">$stocks = Stock::withTrashed()-&gt;where('stock_id', 20)-&gt;restore();<\/code><\/pre>\n<p>Questo metodo cambia il campo <code>delete_at<\/code> di un modello eliminato in modo soft in null. Se il modello non \u00e8 stato cancellato, il campo rimane invariato.<\/p>\n<h2>6. Factory di Eloquent<\/h2>\n<p>Le factory di modelli in Laravel creano dati fittizi che possamo usare per testare l&#8217;applicazione o per alimentare il database. Per farlo, dobbiamo creare un modello in una classe factory, come mostrato nell&#8217;esempio seguente. Il frammento di codice crea un modello di factory che pu\u00f2 generare fornitori falsi di un prodotto e dei suoi prezzi.<\/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>Il metodo <code>definition()<\/code> dell&#8217;esempio precedente restituisce un insieme di valori di attributi che Laravel utilizza per la creazione del modello. L&#8217;helper fake aiuta il factory ad accedere alla libreria di PHP, <a href=\"https:\/\/fakerphp.github.io\/\" target=\"blank\" rel=\"noopener\">Faker<\/a>.<\/p>\n<h2 id=\"h.kvdd4m1lmda5\">Riepilogo<\/h2>\n<p>Eloquent semplifica le attivit\u00e0 di sviluppo delle applicazioni in Laravel. \u00c8 ugualmente efficace nella creazione di query semplici o complesse, grazie a implementazioni come le relazioni. La semplicit\u00e0 di generare dati fittizi funzionali utilizzando le factory lo rende perfetto per gli sviluppatori che vogliono creare test robusti per le loro applicazioni. Inoltre, gli scope di Eloquent aiutano a semplificare le query complesse in modo da rendere il codice pi\u00f9 ordinato.<\/p>\n<p>Sebbene questo articolo abbia trattato solo sei delle sue caratteristiche principali, Eloquent possiede altre potenti funzionalit\u00e0. L&#8217;uso di modelli condivisibili e riutilizzabili ha reso Eloquent una funzione molto apprezzata dagli sviluppatori e la semplicit\u00e0 delle query di Eloquent rende Laravel un framework facile da sviluppare, anche per i principianti.<\/p>\n<p>Qualunque sia il vostro livello di esperienza, la piattaforma di <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Hosting di Applicazioni web<\/a> di Kinsta supporta gli sviluppatori come voi. Il nostro <a href=\"https:\/\/docs.sevalla.com\/templates\/overviewphp-examples#laravel\">template di avvio rapido di Laravel<\/a> mostra quanto sia facile rendere operativa la vostra applicazione sui nostri server all&#8217;interno della <a href=\"https:\/\/kinsta.com\/it\/blog\/piattaforma-cloud-per-sviluppatori\/\">rete premium tier<\/a> di Google Cloud.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel \u00e8 un framework PHP open-source e facile da usare. Una delle sue caratteristiche pi\u00f9 potenti \u00e8 Eloquent, un ORM (object-relational mapper) che semplifica la gestione &#8230;<\/p>\n","protected":false},"author":259,"featured_media":76446,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[26020],"class_list":["post-76445","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>Sei cose da sapere per usare al meglio Laravel Eloquent - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Migliora le tue competenze Laravel con Eloquent query scope, relazioni, mutator e accessor, collection, cancellazione di modelli e factory.\" \/>\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\/it\/blog\/laravel-eloquent\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sei cose da sapere per usare al meglio Laravel Eloquent\" \/>\n<meta property=\"og:description\" content=\"Migliora le tue competenze Laravel con Eloquent query scope, relazioni, mutator e accessor, collection, cancellazione di modelli e factory.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-08T18:32:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-22T19:01:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/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=\"Migliora le tue competenze Laravel con Eloquent query scope, relazioni, mutator e accessor, collection, cancellazione di modelli e factory.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/master-laravel-eloquent.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"Sei cose da sapere per usare al meglio Laravel Eloquent\",\"datePublished\":\"2024-02-08T18:32:01+00:00\",\"dateModified\":\"2024-04-22T19:01:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/\"},\"wordCount\":1536,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/master-laravel-eloquent.png\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/\",\"name\":\"Sei cose da sapere per usare al meglio Laravel Eloquent - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/master-laravel-eloquent.png\",\"datePublished\":\"2024-02-08T18:32:01+00:00\",\"dateModified\":\"2024-04-22T19:01:31+00:00\",\"description\":\"Migliora le tue competenze Laravel con Eloquent query scope, relazioni, mutator e accessor, collection, cancellazione di modelli e factory.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/master-laravel-eloquent.png\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/master-laravel-eloquent.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Sei cose da sapere per usare al meglio Laravel Eloquent\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"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\/it\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Sei cose da sapere per usare al meglio Laravel Eloquent - Kinsta\u00ae","description":"Migliora le tue competenze Laravel con Eloquent query scope, relazioni, mutator e accessor, collection, cancellazione di modelli e factory.","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\/it\/blog\/laravel-eloquent\/","og_locale":"it_IT","og_type":"article","og_title":"Sei cose da sapere per usare al meglio Laravel Eloquent","og_description":"Migliora le tue competenze Laravel con Eloquent query scope, relazioni, mutator e accessor, collection, cancellazione di modelli e factory.","og_url":"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2024-02-08T18:32:01+00:00","article_modified_time":"2024-04-22T19:01:31+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/master-laravel-eloquent.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Migliora le tue competenze Laravel con Eloquent query scope, relazioni, mutator e accessor, collection, cancellazione di modelli e factory.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/master-laravel-eloquent.png","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Steve Bonisteel","Tempo di lettura stimato":"10 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"Sei cose da sapere per usare al meglio Laravel Eloquent","datePublished":"2024-02-08T18:32:01+00:00","dateModified":"2024-04-22T19:01:31+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/"},"wordCount":1536,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/master-laravel-eloquent.png","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/","url":"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/","name":"Sei cose da sapere per usare al meglio Laravel Eloquent - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/master-laravel-eloquent.png","datePublished":"2024-02-08T18:32:01+00:00","dateModified":"2024-04-22T19:01:31+00:00","description":"Migliora le tue competenze Laravel con Eloquent query scope, relazioni, mutator e accessor, collection, cancellazione di modelli e factory.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/master-laravel-eloquent.png","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/master-laravel-eloquent.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/laravel-eloquent\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/it\/argomenti\/laravel\/"},{"@type":"ListItem","position":3,"name":"Sei cose da sapere per usare al meglio Laravel Eloquent"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","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\/it\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/76445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=76445"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/76445\/revisions"}],"predecessor-version":[{"id":77364,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/76445\/revisions\/77364"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76445\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76445\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76445\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76445\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76445\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76445\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76445\/translations\/es"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76445\/translations\/nl"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76445\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/76446"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=76445"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=76445"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=76445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}