{"id":57900,"date":"2022-07-20T08:37:51","date_gmt":"2022-07-20T07:37:51","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=57900&#038;post_type=knowledgebase&#038;preview_id=57900"},"modified":"2025-10-01T20:46:24","modified_gmt":"2025-10-01T19:46:24","slug":"database-laravel","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/database-laravel\/","title":{"rendered":"Transazioni del Database di Laravel: Come Implementarle e Usarle in Modo Efficace"},"content":{"rendered":"<p>L&#8217;accuratezza e la coerenza dei dati possono portare da piccoli inconvenienti a gravi problemi aziendali. \u00c8 fondamentale creare un codice che memorizzi, modifichi e cancelli i dati nel database in modo sicuro.<\/p>\n<p>Ecco le transazioni del database di Laravel.<\/p>\n<p>Le transazioni di database sono un approccio efficace per garantire l&#8217;integrit\u00e0 dei dati. Laravel semplifica queste transazioni su un&#8217;ampia gamma di database.<\/p>\n<p>Ma cosa sono esattamente? Come potete risolverle in Laravel?<\/p>\n\n<p>Alla fine di questa esauriente guida, avrete imparato tutto sulle transazioni di database in Laravel e su come usarle efficacemente nel vostro progetto.<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Cosa Sono le Transazioni di Database in Laravel?<\/h2>\n<p>Prima di addentrarci nell&#8217;aspetto tecnico, cerchiamo di capire cosa sono le transazioni di <a href=\"https:\/\/kinsta.com\/it\/blog\/open-source-database\/\" rel=\"noopener\">database<\/a> in Laravel e come potete trarne vantaggio.<\/p>\n<p>Una transazione di database \u00e8 un insieme di operazioni che potete eseguire in modo sicuro all&#8217;interno della struttura del database della vostra applicazione, per esempio query SQL per modificare i dati (come aggiornamenti, cancellazioni e inserimenti).<\/p>\n<p>In qualsiasi momento, potete decidere di annullare tutte le query della transazione. Inoltre, tutte le query effettuate verranno trattate dal database come un&#8217;unica azione.<\/p>\n<p>Vediamo un esempio.<\/p>\n<p>Supponiamo di avere un&#8217;applicazione che permette agli utenti di creare degli account. Naturalmente, a ogni account possono essere associati uno o pi\u00f9 utenti. Se l&#8217;app genera contemporaneamente un account e il primo utente, dovrete occuparvi di cosa succede se l&#8217;account viene generato correttamente, ma l&#8217;utente no.<\/p>\n<p>Date un&#8217;occhiata a questo esempio di codice:<\/p>\n<pre><code class=\"language-php\">\/\/ Create Account\n$newAcct = Account::create([\n  'accountname' =&gt; Input::get('accountname'),\n]);\n\n\/\/ Create User\n$newUser = User::create([\n  'username' =&gt; Input::get('username'),\n  'account_id' =&gt; $newAcct-&gt;id,\n]);<\/code><\/pre>\n<p>Ci sono due scenari che possono causare problemi spiacevoli:<\/p>\n<ol>\n<li>L&#8217;account non viene generato<\/li>\n<li>Impossibile creare un utente<\/li>\n<\/ol>\n<p>Consideriamo quest&#8217;ultima situazione.<\/p>\n<p>Avere un account senza utenti disponibili comporta un&#8217;incoerenza dei dati nel database. Per risolvere questo problema, potete affrontare l&#8217;arduo compito di creare un codice per ovviare a questa situazione, oppure risparmiare molto codice o semplicemente inserirlo in una transazione per fare le cose in fretta.<\/p>\n<p>Le transazioni sono presenti nella maggior parte dei database SQL, ma variano soprattutto nella loro implementazione ed efficienza. I sistemi pi\u00f9 diffusi come <a href=\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-prestazioni-mysql\/\" rel=\"noopener\">MySQL<\/a>, SQLite, <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-e-postgresql\/\" rel=\"noopener\">PostgreSQL<\/a> e Oracle supportano le transazioni, quindi non dovreste avere problemi a implementare il vostro database SQL preferito.<\/p>\n<h3>Migrazioni<\/h3>\n<p>La migrazione \u00e8 una funzionalit\u00e0 fondamentale di <a href=\"https:\/\/kinsta.com\/it\/blog\/framework-laravel\/\" rel=\"noopener\">Laravel<\/a> che vi permette di creare una tabella nel vostro database, apportare modifiche e condividere lo schema del database dell&#8217;applicazione. Potete usare la migrazione di Laravel per modificare le tabelle aggiungendo nuove colonne o rimuovendo quelle esistenti.<\/p>\n<p>Supponiamo che stiate <a href=\"https:\/\/kinsta.com\/it\/blog\/slack-vs-discord\/\" rel=\"noopener\">discutendo delle idee con un team<\/a> e che dobbiate apportare delle modifiche alla tabella. Il file SQL deve essere condiviso e importato da qualcuno del team. \u00c8 possibile che questa persona si dimentichi di importare il file SQL, causando problemi nel funzionamento dell&#8217;applicazione.<\/p>\n<p>\u00c8 qui che la migrazione di Laravel viene in aiuto. Potete aggiungere una nuova colonna al vostro database o eliminare voci senza influenzare quelle gi\u00e0 presenti.<\/p>\n<h3>Seeder<\/h3>\n<p>Il seeding \u00e8 uno strumento fornito a chi sviluppa con <a href=\"https:\/\/kinsta.com\/it\/blog\/laravel-9\/\" rel=\"noopener\">Laravel<\/a> per facilitare il test di diversi tipi di dati, risolvere bug e ottimizzare le prestazioni. Potete aggiungere automaticamente pi\u00f9 righe di dati fittizi alla tabella del vostro database tramite il seeder del database con un solo comando.<\/p>\n<p>In questo modo potete ricominciare da capo con un nuovo database e dei valori di esempio, invece di doverli inserire manualmente ogni volta che il database viene ripristinato.<\/p>\n<h2>Opzioni per le Transazioni del Database Laravel<\/h2>\n<p>Laravel offre diversi strumenti per gestire i dati come <a href=\"https:\/\/kinsta.com\/it\/blog\/adminer\/\" rel=\"noopener\">Adminer<\/a>. Per quanto riguarda le transazioni del database, ci sono tre metodi per avviare una transazione manualmente e avere il pieno controllo sulla gestione delle transazioni.<\/p>\n<p>Molti utenti trovano queste opzioni pi\u00f9 flessibili per definire esattamente quando una transazione deve essere eseguita o annullata:<\/p>\n<ul>\n<li><strong>Creare una transazione:<\/strong> Usate il comando <code>DB::beginTransaction();<\/code> per avviare una transazione.<\/li>\n<li><strong>Annullare una transazione:<\/strong> Usate il comando <code>DB::rollBack();<\/code> se volete apportare delle modifiche o annullare delle azioni.<\/li>\n<li><strong>Fare commit di una transazione:<\/strong> Se tutto \u00e8 andato come previsto, usate il comando <code>DB::commit();<\/code>.<\/li>\n<\/ul>\n<p>Ricordate sempre di concludere ogni transazione aperta con un&#8217;azione di commit o di rollback, in particolare i loop. In caso contrario, questo metodo manuale non sar\u00e0 sincronizzato e i vostri record non verranno aggiornati.<\/p>\n<h2>Come Lavorare con il Database di Laravel<\/h2>\n<p>Le migrazioni e i seeders, come gi\u00e0 accennato, sono soluzioni sofisticate pensate per chi <a href=\"https:\/\/kinsta.com\/it\/blog\/stipendio-sviluppatore-laravel\/\" rel=\"noopener\">sviluppa con Laravel<\/a> per distribuire, eliminare e ripristinare rapidamente il database di un&#8217;applicazione riducendo le disparit\u00e0. Sono utili soprattutto quando pi\u00f9 persone lavorano allo sviluppo della stessa applicazione.<\/p>\n<p>Questa sezione vi mostrer\u00e0 come usare facilmente le migrazioni e i seeders con il vostro database Laravel tramite i comandi di Artisan.<\/p>\n<h3>Prerequisiti<\/h3>\n<p>Ecco cosa vi serve per iniziare:<\/p>\n<ol>\n<li>Un utente non root con permessi sudo su un computer locale di Ubuntu 18.04 o su un server di sviluppo. \u00c8 buona norma avere un <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-e-un-firewall\/\" rel=\"noopener\">firewall attivo<\/a> se state usando un server remoto.<\/li>\n<li>LEMP installato sul vostro computer. Potete scegliere di installare Docker e Docker Compose per eseguire la vostra applicazione se vi sentite pi\u00f9 a vostro agio a lavorarci.<\/li>\n<\/ol>\n<p>Il nostro strumento <a href=\"https:\/\/kinsta.com\/it\/devkinsta\/\" rel=\"noopener\">DevKinsta<\/a> \u00e8 alimentato da Docker e utilizzato da pi\u00f9 di 60.000 persone che lavorano nello sviluppo e nel design per creare e sviluppare facilmente <a href=\"https:\/\/kinsta.com\/it\/blog\/database-wordpress\/\" rel=\"noopener\">siti WordPress<\/a> singoli o multipli.<\/p>\n<p>Esistono altri <a href=\"https:\/\/kinsta.com\/it\/blog\/strumenti-sviluppo-web\/\" rel=\"noopener\">strumenti di sviluppo web<\/a> che potete usare a seconda delle vostre capacit\u00e0 ed esigenze di codifica.<\/p>\n<h3>Migrazioni Laravel<\/h3>\n<p>Ci sono due metodi in una classe di migrazione: up e down. Il metodo up viene utilizzato per creare nuove tabelle, indici o colonne nel database. Il metodo down annulla gli effetti del metodo up.<\/p>\n<p>Potete usare lo schema builder di Laravel per creare e modificare liberamente le tabelle in ognuno di questi metodi. Per esempio, questa migrazione genera una tabella voli:<\/p>\n<pre><code class=\"language-php\">use IlluminateDatabaseMigrationsMigration;\nuse IlluminateDatabaseSchemaBlueprint;\nuse IlluminateSupportFacadesSchema;\n\nclass CreateFlightsTable extends Migration {\n\/**\n* Run the migrations.\n*\n* @return void\n*\/\n\npublic function up() {\n  Schema::create('flights', function (Blueprint $table) {\n\t$table-&gt;bigIncrements('id');\n\t$table-&gt;string('name');\n\t$table-&gt;string('airline');\n\t$table-&gt;timestamps();\n  });\n}\n\n\/**\n* Reverse the migrations.\n*\n* @return void\n*\/\n\npublic function down() {\n  Schema::drop('flights');\n}<\/code><\/pre>\n<p>Tenete presente che i comandi <code>make:migration<\/code> devono chiarire il nome della tabella. Assicuratevi quindi che <code>table_name<\/code> corrisponda a ci\u00f2 che desiderate.<\/p>\n<p>Potete usare le opzioni <code>--table<\/code> e <code>--create<\/code> per specificare il nome della tabella e se la migrazione deve creare una nuova tabella, come mostrato di seguito:<\/p>\n<pre><code class=\"language-php\">php artisan make:migration create_users_table --create=users<\/code><\/pre>\n<pre><code class=\"language-php\">php artisan make:migration add_votes_to_users_table --table=users<\/code><\/pre>\n<p>La directory <strong>database\/migrazioni<\/strong> includer\u00e0 ora la nuova migrazione. Il nome di ogni file di migrazione include un timestamp, che Laravel usa per determinare l&#8217;ordine di migrazione.<\/p>\n<p>Avete anche la possibilit\u00e0 di definire un indirizzo <code>--path<\/code>, che dovrebbe essere collegato alla directory principale della vostra installazione. Usate il seguente comando:<\/p>\n<pre><code class=\"language-php\">php artisan migrate:make foo --path=app\/migrations<\/code><\/pre>\n<h4>Eseguire le Migrazioni<\/h4>\n<p>Ci sono alcuni comandi utili che potete usare durante l&#8217;esecuzione delle migrazioni. Vediamo di seguito alcuni di essi:<\/p>\n<ul>\n<li><strong><code>php artisan migrate<\/code>:<\/strong> Questo comando pubblica tutti gli schemi nel database. Genera anche una tabella nel database.<\/li>\n<li><strong><code>php artisan migrate --path=app\/foo\/migrations<\/code>:<\/strong> Questo comando esegue tutte le migrazioni in una directory. Se ricevete un messaggio di errore &#8220;Niente da migrare&#8221;, eseguite il comando <code>php artisan migrate --path=database\/migrations\/foo<\/code> senza la directory <strong>app<\/strong>.<\/li>\n<li><strong><code>php artisan migrate --package=vendor\/package<\/code>:<\/strong> Usate questo comando se volete eseguire le migrazioni per un pacchetto.<\/li>\n<\/ul>\n<p>A volte potreste ricevere un errore &#8220;Classe non trovata&#8221; durante l&#8217;esecuzione delle migrazioni. In questo caso, eseguite il comando <code>composer dump-autoload<\/code>.<\/p>\n<p>Alcune migrazioni possono essere pericolose e causare la perdita dei vostri dati. Per questo motivo, Laravel vi chieder\u00e0 di confermare l&#8217;esecuzione dei comandi per salvaguardare i vostri dati.<\/p>\n<p>Se non volete che vi venga richiesto, usate <code>--force flag<\/code> per forzare i comandi come segue:<\/p>\n<pre><code class=\"language-php\">php artisan migrate --force<\/code><\/pre>\n<h4>Rollback delle Migrazioni<\/h4>\n<p>Usate il comando di rollback quando dovete annullare l&#8217;ultimo batch di migrazione come segue:<\/p>\n<pre><code class=\"language-php\">php artisan migrate:rollback<\/code><\/pre>\n<p>Ecco altri comandi di rollback che potete usare:<\/p>\n<ul>\n<li><strong><code>php artisan migrate:reset<\/code>:<\/strong> Questo comando inverte tutte le migrazioni, non solo l&#8217;ultima operazione.<\/li>\n<li><strong><code>php artisan migrate:fresh<\/code>:<\/strong> Usate questo comando quando volete una nuova installazione del database. Rimuove tutte le tabelle esistenti ed esegue il comando <code>migration<\/code>.<\/li>\n<li><strong><code>php artisan migrate:refresh<\/code>:<\/strong> Questo \u00e8 un comando 2-in-1 che esegue entrambi i comandi <code>:rollback and migrate<\/code>.<\/li>\n<li><strong><code>php artisan migrate:fresh --seed<\/code>:<\/strong> Esegue il comando <code>migrate:fresh<\/code> prima di creare il database. Quando installate l&#8217;applicazione su un nuovo host, potete usare questo comando per creare il seed (cio\u00e8 caricare i dati nel database).<\/li>\n<\/ul>\n<h3>Laravel Seeding<\/h3>\n<p>Un seeder \u00e8 una classe che crea e inserisce campioni di dati (seed) in un database. Laravel offre una tecnica semplice per alimentare il database con dati di prova utilizzando le classi seed nella directory <strong>database\/seeds<\/strong>.<\/p>\n<p>Avete la libert\u00e0 di scegliere il nome delle vostre classi seed. Ma vi consigliamo di seguire uno schema di denominazione chiaro, come <em>UsersTableSeeder<\/em>. In seguito, per impostazione predefinita, verr\u00e0 creata una classe <code>DatabaseSeeder<\/code>.<\/p>\n<p>Ecco un esempio di classe seed per database in Laravel:<\/p>\n<pre><code class=\"language-php\">class DatabaseSeeder extends Seeder {\n  public function run() {\n\t$this-&gt;call('UserTableSeeder');\n\t$this-&gt;command-&gt;info('User table seeded!');\n  }\n}\nclass UserTableSeeder extends Seeder {\n  public function run() {\n\tDB::table('users')-&gt;delete();\n\tUser::create(array('email' =&gt; 'foo@bar.com'));\n  }\n}<\/code><\/pre>\n<h4>Creare un Seeder<\/h4>\n<p>Generare dei seeders \u00e8 semplicissimo, potreste farlo a occhi chiusi (ma per favore non fatelo).<\/p>\n<p>Eseguite il comando <code>make:seeder<\/code> artisan per creare un seeder. Ora la cartella <strong>database\/seeds<\/strong> includer\u00e0 tutti i seeders prodotti dal framework:<\/p>\n<pre><code class=\"language-php\">php artisan make:seeder UsersTableSeeder<\/code><\/pre>\n<p>Il metodo predefinito di una classe di seeders \u00e8 l&#8217;esecuzione. Il processo avviene quando applicate il comando <code>db:seed<\/code> artisan. Potete inserire i dati nel vostro database nel modo che preferite utilizzando la funzione run. Inoltre, \u00e8 possibile utilizzare le fabbriche di modelli di Eloquent o Query Builder per inserire i dati manualmente.<\/p>\n<p>In ogni caso, dovete tenere presente che durante l&#8217;inserimento del database, la protezione dell&#8217;assegnazione massiva viene disattivata automaticamente.<\/p>\n<p>In questo caso, apporteremo delle modifiche alla classe di base <code>DatabaseSeeder<\/code> e aggiungeremo un&#8217;istruzione di inserimento nel database al metodo run:<\/p>\n<pre><code class=\"language-php\">&lt;?php\nuse IlluminateDatabaseSeeder;\nuse IlluminateSupportFacadesDB;\nuse IlluminateSupportFacadesHash;\nuse IlluminateSupportStr;\n\nclass DatabaseSeeder extends Seeder {\n  \/**\n  * Run the database seeds.\n  *\n  * @return void\n  *\/\n  public function run() {\n\tDB::table('users')-&gt;insert([\n  \t'name' =&gt; Str::random(10),\n  \t'email' =&gt; Str::random(10).'@gmail.com',\n  \t'password' =&gt; Hash::make('password'),\n\t]);\n  }\n}<\/code><\/pre>\n<p>Se volete indicare eventuali dipendenze all&#8217;interno del codice del metodo di esecuzione, il contenitore di servizi Laravel le risolver\u00e0 automaticamente.<\/p>\n<p>Inoltre, potete usare la funzione <code>call<\/code> per eseguire diverse classi di seed da questa classe, consentendovi di personalizzare l&#8217;ordine di seeding. Potete suddividere il seeding del database in diversi file, assicurandovi che nessuna classe di seeder si espanda eccessivamente.<\/p>\n<p>Inserite il nome della classe di seeder che volete utilizzare come mostrato di seguito:<\/p>\n<pre><code class=\"language-php\">\/**\n* Run the database seeds.\n*\n* @return void\n*\/\npublic function run() {\n  $this-&gt;call([\n\tUsersTableSeeder::class,\n\tPostsTableSeeder::class,\n\tCommentsTableSeeder::class,\n  ]);\n}<\/code><\/pre>\n<h4>Esecuzione dei Seeder<\/h4>\n<p>Dopo aver generato il vostro seeder, potreste aver bisogno di usare il comando <code>dump-autoload<\/code> per ricreare l&#8217;autoloader di Composer:<\/p>\n<pre><code class=\"language-php\">composer dump-autoload<\/code><\/pre>\n<p>Successivamente, dovrete eseguire il comando <code>db:seed<\/code> artisan per fare seeding del vostro database:<\/p>\n<pre><code class=\"language-php\">php artisan db:seed<\/code><\/pre>\n<p>Questo comando esegue la classe <code>DatabaseSeeder<\/code> per procura, che pu\u00f2 essere utilizzata per eseguire altre classi di seed. Tuttavia, potete usare il parametro <code>--class<\/code> per eseguire una particolare classe di seeder separatamente, come segue:<\/p>\n<pre><code class=\"language-php\">php artisan db:seed --class=UserTableSeeder<\/code><\/pre>\n<p>E se voleste ricreare il vostro database da zero, rimuovendo tutte le tabelle ed eseguendo nuovamente tutte le migrazioni? In questo caso, usate il comando <code>migrate:fresh<\/code> per eseguire il seed del database.<\/p>\n<pre><code class=\"language-php\">php artisan migrate:fresh --seed<\/code><\/pre>\n<p>Come nel caso delle migrazioni, alcuni processi di seeding possono portare alla perdita di dati o a modifiche indesiderate. Per questo motivo, vi verr\u00e0 richiesta l&#8217;approvazione prima dell&#8217;esecuzione dei seeders per evitare di eseguire comandi di seeding sul vostro database primario.<\/p>\n<p>Se siete abbastanza sicuri e non volete essere interrotti da questo passaggio di sicurezza, usate il flag <code>--force<\/code> qui sotto:<\/p>\n<pre><code class=\"language-php\">php artisan db:seed --force<\/code><\/pre>\n<h2>Altri 5 Modi per Usare le Query di Database Grezze in Laravel<\/h2>\n<p>Anche se Laravel offre strumenti pratici come Eloquent e Query Builder, potete comunque eseguire query grezze utilizzando SQL. Abbiamo raccolto cinque modi diversi per farlo.<\/p>\n<p>Ma prima di iniziare, dovete sapere che le query grezze non sono protette automaticamente, il che le rende un approccio rischioso. Per questo motivo, se inserite dei parametri nella query, assicuratevi che siano nel formato corretto e che abbiano i valori giusti, come ad esempio un numero piuttosto che un testo.<\/p>\n<h3>Calcoli con Avg\/Sum\/Count<\/h3>\n<p>Potete usare una query grezza se volete creare <code>GROUP BY ()<\/code> e poi usare le funzioni aggregate di <a href=\"https:\/\/kinsta.com\/it\/blog\/mongodb-vs-mysql\/\" rel=\"noopener\">MySQL<\/a> come <code>Count()<\/code>, <code>SUM()<\/code>, <code>AVG()<\/code>, <code>MIN()<\/code> o <code>MAX()<\/code> come mostrato nel seguente esempio:<\/p>\n<pre><code class=\"language-php\">$users = DB::table('users')\n  -&gt;selectRaw('count(*) as user_count, status')\n  -&gt;where('status', '&lt;&gt;', 1)\n  -&gt;groupBy('status')\n  -&gt;get();<\/code><\/pre>\n<p>\u00c8 anche possibile eseguire sia <code>count()<\/code> che <code>avg()<\/code> nella stessa query SQL:<\/p>\n<pre><code class=\"language-php\">$salaries = DB::table('salaries')\n  -&gt;selectRaw('companies.name as company_name, avg(salary) as avg_salary, count(*) as people_count')\n  -&gt;join('companies', 'salaries.company_id', '=', 'companies.id')\n  -&gt;groupBy('companies.id')\n  -&gt;orderByDesc('avg_salary')\n  -&gt;get();<\/code><\/pre>\n<h3>Filtrare gli Anni<\/h3>\n<p>Nel caso in cui doveste eseguire dei calcoli SQL all&#8217;interno di <code>GROUP BY<\/code> o <code>ORDER BY<\/code>, potete usare le query <code>groupByRaw()<\/code> e <code>orderByRaw()<\/code>. Dopo il raggruppamento, potete anche usare l&#8217;istruzione <code>where<\/code> xon una query SQL <code>having<\/code> con <code>havingRaw ()<\/code>.<\/p>\n<p>Pwe esempio, questo comando mostra come raggruppare un campo data\/ora per anno:<\/p>\n<pre><code class=\"language-php\">$results = User::selectRaw('YEAR(birth_date) as year, COUNT(id) as amount')\n  -&gt;groupByRaw('YEAR(birth_date)')\n  -&gt;havingRaw('YEAR(birth_date) &gt; 2000')\n  -&gt;orderByRaw('YEAR(birth_date)')\n  -&gt;get();<\/code><\/pre>\n<h3>Calcolo di un Singolo Campo (Sotto-Query)<\/h3>\n<p>Supponiamo che vogliate calcolare una colonna da un&#8217;altra e restituire il risultato in una query SQL. Come farlo?<\/p>\n<p>Diamo un&#8217;occhiata:<\/p>\n<pre><code class=\"language-php\">$products = Product::select('id', 'name')\n  -&gt;selectRaw('price - discount_price AS discount')\n  -&gt;get();<\/code><\/pre>\n<p>Ecco un altro esempio di istruzione SQL <code>CASE<\/code>:<\/p>\n<pre><code class=\"language-php\">$users = DB::table('users')\n  -&gt;select('name', 'surname')\n  -&gt;selectRaw(\"(CASE WHEN (gender = 1) THEN 'M' ELSE 'F' END) as gender_text\")\n  -&gt;get();<\/code><\/pre>\n<h3>Convertire un Vecchio SQL<\/h3>\n<p>\u00c8 uno scenario comune avere un&#8217;istruzione SQL che deve essere convertita in Eloquent o Query Builder, soprattutto se proviene da un vecchio progetto a cui avete lavorato.<\/p>\n<p>In realt\u00e0 non \u00e8 necessario farlo. Potete invece usare l&#8217;istruzione <code>DB::select()<\/code> come mostrato:<\/p>\n<pre><code class=\"language-php\">$results = DB::select('select * from users where id=?', [1]);<\/code><\/pre>\n<h3>Eseguire una Query Senza Risultati<\/h3>\n<p><code>DB::statement<\/code> pu\u00f2 eseguire una query SQL senza ottenere risultati come <code>INSERT<\/code> o <code>UPDATE<\/code> senza variabili.<\/p>\n<p>Questa funzione si usa spesso nelle migrazioni di database quando la struttura di una tabella cambia e i vecchi dati devono essere modificati con quelli nuovi:<\/p>\n<pre><code class=\"language-php\">DB::statement('UPDATE users SET role_id = 1 WHERE role_id IS NULL AND YEAR(created_at) &gt; 2020');<\/code><\/pre>\n<p>Inoltre, <code>DB::statement()<\/code> pu\u00f2 eseguire qualsiasi query SQL con schema non limitato a valori o colonne. Ecco un esempio:<\/p>\n<pre><code class=\"language-php\">DB::statement('DROP TABLE users');\nDB::statement('ALTER TABLE projects AUTO_INCREMENT=123');<\/code><\/pre>\n\n<h2>Riepilogo<\/h2>\n<p>A questo punto dovreste avere una conoscenza approfondita delle transazioni di database in Laravel e di come implementarle. Non solo aiutano l&#8217;integrit\u00e0 dei dati, ma contribuiscono anche a <a href=\"https:\/\/kinsta.com\/it\/blog\/prestazioni-laravel\/\" rel=\"noopener\">ottimizzare le prestazioni di Laravel<\/a> e a semplificare il <a href=\"https:\/\/kinsta.com\/it\/blog\/tutorial-laravel\/\" rel=\"noopener\">processo di sviluppo<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&#8217;accuratezza e la coerenza dei dati possono portare da piccoli inconvenienti a gravi problemi aziendali. \u00c8 fondamentale creare un codice che memorizzi, modifichi e cancelli i &#8230;<\/p>\n","protected":false},"author":255,"featured_media":64113,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[10885,26137,25528,41],"topic":[26164,26020],"class_list":["post-57900","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-database","tag-framework-php","tag-laravel","tag-php","topic-framework-php","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>Transazioni del Database di Laravel: Come Implementarle e Usarle in Modo Efficace<\/title>\n<meta name=\"description\" content=\"Vuoi sapere tutto sulle transazioni del database in Laravel e come usarle in modo efficace? La Knowledge Base di Kinsta ha la risposta.\" \/>\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\/database-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Transazioni del Database di Laravel: Come Implementarle e Usarle in Modo Efficace\" \/>\n<meta property=\"og:description\" content=\"Vuoi sapere tutto sulle transazioni del database in Laravel e come usarle in modo efficace? La Knowledge Base di Kinsta ha la risposta.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/\" \/>\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=\"2022-07-20T07:37:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T19:46:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/laravel-database.jpeg\" \/>\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\/jpeg\" \/>\n<meta name=\"author\" content=\"Mahitab Mostafa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Vuoi sapere tutto sulle transazioni del database in Laravel e come usarle in modo efficace? La Knowledge Base di Kinsta ha la risposta.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/laravel-database.jpeg\" \/>\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=\"Mahitab Mostafa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/\"},\"author\":{\"name\":\"Mahitab Mostafa\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/4dbde09b713b852c27568adce0f2bc58\"},\"headline\":\"Transazioni del Database di Laravel: Come Implementarle e Usarle in Modo Efficace\",\"datePublished\":\"2022-07-20T07:37:51+00:00\",\"dateModified\":\"2025-10-01T19:46:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/\"},\"wordCount\":2107,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/laravel-database.jpeg\",\"keywords\":[\"database\",\"framework php\",\"laravel\",\"php\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/\",\"name\":\"Transazioni del Database di Laravel: Come Implementarle e Usarle in Modo Efficace\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/laravel-database.jpeg\",\"datePublished\":\"2022-07-20T07:37:51+00:00\",\"dateModified\":\"2025-10-01T19:46:24+00:00\",\"description\":\"Vuoi sapere tutto sulle transazioni del database in Laravel e come usarle in modo efficace? La Knowledge Base di Kinsta ha la risposta.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/laravel-database.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/laravel-database.jpeg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Framework PHP\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/framework-php\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Transazioni del Database di Laravel: Come Implementarle e Usarle in Modo Efficace\"}]},{\"@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\/4dbde09b713b852c27568adce0f2bc58\",\"name\":\"Mahitab Mostafa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6456ca852177359ceabdff9d695558aa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6456ca852177359ceabdff9d695558aa?s=96&d=mm&r=g\",\"caption\":\"Mahitab Mostafa\"},\"description\":\"Mahitab is a professional content writer, specializing in technology and cybersecurity. She has written hundreds of articles about WordPress, web hosting, and other related topics. She's a firm believer in the internet's role in the future of business.\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/mahitabmostafa\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Transazioni del Database di Laravel: Come Implementarle e Usarle in Modo Efficace","description":"Vuoi sapere tutto sulle transazioni del database in Laravel e come usarle in modo efficace? La Knowledge Base di Kinsta ha la risposta.","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\/database-laravel\/","og_locale":"it_IT","og_type":"article","og_title":"Transazioni del Database di Laravel: Come Implementarle e Usarle in Modo Efficace","og_description":"Vuoi sapere tutto sulle transazioni del database in Laravel e come usarle in modo efficace? La Knowledge Base di Kinsta ha la risposta.","og_url":"https:\/\/kinsta.com\/it\/blog\/database-laravel\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2022-07-20T07:37:51+00:00","article_modified_time":"2025-10-01T19:46:24+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/laravel-database.jpeg","type":"image\/jpeg"}],"author":"Mahitab Mostafa","twitter_card":"summary_large_image","twitter_description":"Vuoi sapere tutto sulle transazioni del database in Laravel e come usarle in modo efficace? La Knowledge Base di Kinsta ha la risposta.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/laravel-database.jpeg","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Mahitab Mostafa","Tempo di lettura stimato":"13 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/database-laravel\/"},"author":{"name":"Mahitab Mostafa","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/4dbde09b713b852c27568adce0f2bc58"},"headline":"Transazioni del Database di Laravel: Come Implementarle e Usarle in Modo Efficace","datePublished":"2022-07-20T07:37:51+00:00","dateModified":"2025-10-01T19:46:24+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/database-laravel\/"},"wordCount":2107,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/laravel-database.jpeg","keywords":["database","framework php","laravel","php"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/database-laravel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/database-laravel\/","url":"https:\/\/kinsta.com\/it\/blog\/database-laravel\/","name":"Transazioni del Database di Laravel: Come Implementarle e Usarle in Modo Efficace","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/laravel-database.jpeg","datePublished":"2022-07-20T07:37:51+00:00","dateModified":"2025-10-01T19:46:24+00:00","description":"Vuoi sapere tutto sulle transazioni del database in Laravel e come usarle in modo efficace? La Knowledge Base di Kinsta ha la risposta.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/database-laravel\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/laravel-database.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/07\/laravel-database.jpeg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/database-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Framework PHP","item":"https:\/\/kinsta.com\/it\/argomenti\/framework-php\/"},{"@type":"ListItem","position":3,"name":"Transazioni del Database di Laravel: Come Implementarle e Usarle in Modo Efficace"}]},{"@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\/4dbde09b713b852c27568adce0f2bc58","name":"Mahitab Mostafa","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6456ca852177359ceabdff9d695558aa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6456ca852177359ceabdff9d695558aa?s=96&d=mm&r=g","caption":"Mahitab Mostafa"},"description":"Mahitab is a professional content writer, specializing in technology and cybersecurity. She has written hundreds of articles about WordPress, web hosting, and other related topics. She's a firm believer in the internet's role in the future of business.","url":"https:\/\/kinsta.com\/it\/blog\/author\/mahitabmostafa\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/57900","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\/255"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=57900"}],"version-history":[{"count":9,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/57900\/revisions"}],"predecessor-version":[{"id":64240,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/57900\/revisions\/64240"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57900\/translations\/en"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57900\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57900\/translations\/de"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57900\/translations\/fr"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57900\/translations\/es"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57900\/translations\/it"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57900\/translations\/jp"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/57900\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/64113"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=57900"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=57900"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=57900"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}