{"id":25834,"date":"2021-06-07T12:07:00","date_gmt":"2021-06-07T09:07:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25834"},"modified":"2021-10-18T03:04:52","modified_gmt":"2021-10-18T00:04:52","slug":"come-utilizzare-la-funzionalita-di-connessioni-multiple-di-database-di-laravel-su-un-sito-web","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/come-utilizzare-la-funzionalita-di-connessioni-multiple-di-database-di-laravel-su-un-sito-web\/","title":{"rendered":"Come utilizzare la funzionalit\u00e0 di connessioni multiple di database di Laravel su un sito Web"},"content":{"rendered":"<p>Stai cercando di connettere pi\u00f9 database alla tua applicazione Laravel? A volte, potresti imbatterti in una situazione in cui devi gestire pi\u00f9 di un database. In questo articolo, studiamo come connettere e utilizzare pi\u00f9 database nell&#8217;applicazione Laravel. Laravel fornisce supporto per pi\u00f9 connessioni al database nel suo stesso nucleo.<\/p>\n<p>Di solito, abbiamo bisogno di un singolo database per un sito web. Tuttavia, pu\u00f2 essere possibile che tu debba memorizzare alcuni dati sulla tua applicazione su un altro database. Ho lavorato a un progetto di e-commerce in cui volevamo inviare i dettagli dell&#8217;ordine a un database separato. Nel tuo caso, i requisiti possono essere diversi.<\/p>\n<p>Detto questo, diamo un&#8217;occhiata alla connessione e all&#8217;utilizzo di pi\u00f9 database con Laravel.<\/p>\n<h3>Aggiungi pi\u00f9 connessioni al database in Laravel<\/h3>\n<p>Come ho detto, Laravel ti consente di connettere pi\u00f9 database. Possiamo utilizzare una piattaforma di database diversa come SQLite, MySQL, SQLSRV con Laravel. Per questo tutorial, utilizzer\u00f2 un&#8217;altra istanza MySQL di un database separato. In parole povere, ci occuperemo di un database MySQL separato come spazio di archiviazione aggiuntivo.<\/p>\n<p>Laravel memorizza una connessione al database nel <code>config\/database.php<\/code>file. Per aggiungere un&#8217;altra connessione di MySQL dobbiamo modificare questo file.<\/p>\n<p>Aggiungiamo un&#8217;altra connessione e cio\u00e8 &#8216;mysql2&#8217;. Puoi dare qualsiasi altro nome a questa connessione. Assicurati di utilizzare lo stesso nome mentre interagisci con il database.<\/p>\n<p><strong>config\/database.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nuse IlluminateSupportStr;\n\u00a0\nreturn [\n\u00a0\u00a0\u00a0\u00a0...\n\u00a0\n\u00a0\u00a0\u00a0\u00a0'connections' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0...\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0...\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'mysql' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'driver' =&gt; 'mysql',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'url' =&gt; env('DATABASE_URL'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'host' =&gt; env('DB_HOST', '127.0.0.1'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'port' =&gt; env('DB_PORT', '3306'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'database' =&gt; env('DB_DATABASE', 'forge'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'username' =&gt; env('DB_USERNAME', 'forge'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; env('DB_PASSWORD', ''),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'unix_socket' =&gt; env('DB_SOCKET', ''),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'charset' =&gt; 'utf8mb4',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'collation' =&gt; 'utf8mb4_unicode_ci',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'prefix' =&gt; '',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'prefix_indexes' =&gt; true,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'strict' =&gt; true,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'engine' =&gt; null,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'options' =&gt; extension_loaded('pdo_mysql')? array_filter([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0PDO::MYSQL_ATTR_SSL_CA =&gt; env('MYSQL_ATTR_SSL_CA'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]): [],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'mysql2' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'driver' =&gt; 'mysql',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'url' =&gt; env('DATABASE_URL'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'host' =&gt; env('DB_HOST_2', '127.0.0.1'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'port' =&gt; env('DB_PORT_2', '3306'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'database' =&gt; env('DB_DATABASE_2', 'forge'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'username' =&gt; env('DB_USERNAME_2', 'forge'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; env('DB_PASSWORD_2', ''),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'unix_socket' =&gt; env('DB_SOCKET', ''),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'charset' =&gt; 'utf8mb4',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'collation' =&gt; 'utf8mb4_unicode_ci',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'prefix' =&gt; '',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'prefix_indexes' =&gt; true,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'strict' =&gt; true,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'engine' =&gt; null,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'options' =&gt; extension_loaded('pdo_mysql')? array_filter([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0PDO::MYSQL_ATTR_SSL_CA =&gt; env('MYSQL_ATTR_SSL_CA'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]): [],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0]<\/code><\/pre>\n<p>Nel codice sopra, la connessione &#8216;mysql&#8217; \u00e8 quella predefinita. Ho aggiunto una nuova connessione &quot;mysql2&quot; con diverse costanti. Qui, ho passato le costanti come DB_DATABASE_2, DB_USERNAME_2, DB_PASSWORD_2, ecc. Se il tuo database \u00e8 ospitato su un altro server, dovresti cambiare anche le chiavi di DB_HOST_2 e DB_PORT_2. Presumo che entrambi i database siano sullo stesso server. Quindi, non cambio i valori di queste costanti.<\/p>\n<p>Laravel ottiene i valori di queste costanti usando il <code>env()<\/code>metodo. Significa che dovremmo aggiungere altri dettagli del database in un file &#8216;.env&#8217; come di seguito.<\/p>\n<pre><code>DB_HOST_2=127.0.0.1\nDB_PORT_2=3306\nDB_DATABASE_2=\nDB_USERNAME_2=\nDB_PASSWORD_2=<\/code><\/pre>\n<p>Dopo aver eseguito i passaggi precedenti, abbiamo finito di connettere un altro database in Laravel. La prossima cosa \u00e8 interagire con questo database.<\/p>\n<h3>Esegui la migrazione su un altro database in Laravel<\/h3>\n<p>Quando si tratta di Laravel, dovremmo sempre creare tabelle nel database utilizzando le migrazioni. Supponiamo di voler creare una tabella &quot;prodotti&quot; nel nostro database separato. Esegui il comando seguente che creer\u00e0 un file di migrazione.<\/p>\n<pre><code>php artisan make:migration create_products_table<\/code><\/pre>\n<p>Creer\u00e0 un nuovo file all&#8217;interno della directory &#8216;database\/migrations&#8217;. Apri il file nell&#8217;editor e passa la connessione appena creata come mostrato di seguito.<\/p>\n<pre><code>&lt;?php\n\u00a0\nuse IlluminateDatabaseMigrationsMigration;\nuse IlluminateDatabaseSchemaBlueprint;\nuse IlluminateSupportFacadesSchema;\n\u00a0\nclass CreateProductsTable extends Migration\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Run the migrations.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return void\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function up()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Schema::connection('mysql2')-&gt;create('products', function (Blueprint $table) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;id();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('name');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;timestamps();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Reverse the migrations.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return void\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function down()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Schema::connection('mysql2')-&gt;dropIfExists('products');\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Ho passato il valore &#8216;mysql2&#8217; al <code>connection<\/code>metodo della <code>Schema<\/code>classe. Significa che quando esegui il comando migrate, questo codice esegue il codice sopra sull&#8217;altro database la cui stringa di connessione \u00e8 stata passata.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Dopo aver eseguito il comando sopra, vai al tuo secondo database. Ora dovrebbe avere una tabella &quot;prodotti&quot;.<\/p>\n<h3>Esegui query su un altro database<\/h3>\n<p>In Laravel, puoi interagire con il database tramite un <a href=\"https:\/\/laravel.com\/docs\/master\/queries\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Query Builder<\/a> o utilizzando <a href=\"https:\/\/laravel.com\/docs\/master\/eloquent\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Eloquent ORM<\/a>.<\/p>\n<p><code>DB<\/code>facciata fornisce un metodo chiamato connection che viene utilizzato per eseguire query su un altro database. Scriviamo una query sulla connessione &#8216;mysql2&#8217; usando un Query Builder.<\/p>\n<pre><code>$products = DB::connection('mysql2')-&gt;select('SELECT * FROM products');\n$products = DB::connection('mysql2')-&gt;select('SELECT * FROM products where id = ?', [1]);<\/code><\/pre>\n<p>Query Builder eseguir\u00e0 automaticamente le query di cui sopra sull&#8217;altro database facendo riferimento al metodo di connessione.<\/p>\n<p>Quando si tratta di Eloquent, ci sono 2 modi per connettere database separati. Il primo modo \u00e8 usare la <code>$connection<\/code>variabile all&#8217;interno della classe Model.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppModels;\n\u00a0\nuse IlluminateDatabaseEloquentFactoriesHasFactory;\nuse IlluminateDatabaseEloquentModel;\n\u00a0\nclass Product extends Model\n{\n\u00a0\u00a0\u00a0\u00a0use HasFactory;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* The connection name for the model.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @var string\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0protected $connection = 'mysql2'; \/\/pass the connection name here\n}<\/code><\/pre>\n<p>Ora il modello &quot;Prodotti&quot; si occuper\u00e0 solo del secondo database.<\/p>\n<p>Nella seconda opzione, puoi creare una connessione al volo ogni volta che \u00e8 necessario. In questo modo \u00e8 possibile interagire con pi\u00f9 database da un unico Modello.<\/p>\n<pre><code>&lt;?php\n...\nuse AppModelsProduct;\n\u00a0\nclass ProductController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0public function index()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$product = new Product;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$product-&gt;setConnection('mysql2');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_product = $product-&gt;find(1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0dd($arr_product);\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Qui, ho impostato il runtime della connessione utilizzando il <code>setConnection()<\/code>metodo.<\/p>\n<p>Questo \u00e8 tutto! Spero che tu capisca come connettere pi\u00f9 database nell&#8217;applicazione Laravel. Per favore condividi i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.<\/p>\n<h4>articoli Correlati<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/crea-un-sito-web-multilingue-in-php-utilizzando-laravel-framework\/\" title=\"Crea un sito Web multilingue in PHP utilizzando Laravel Framework\">Crea un sito Web multilingue in PHP utilizzando Laravel Framework<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-caricare-e-comprimere-immagini-in-laravel\/\" title=\"Una guida per caricare e comprimere immagini in Laravel\">Una guida per caricare e comprimere immagini in Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-installare-e-utilizzare-ckeditor-in-laravel\/\" title=\"Come installare e utilizzare CKEditor in Laravel\">Come installare e utilizzare CKEditor in Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vuoi sapere come configurare pi\u00f9 connessioni al database in laravel? In questo articolo, ti mostriamo una guida passo passo su come aggiungere<\/p>\n","protected":false},"author":1,"featured_media":21643,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[500],"tags":[846],"class_list":["post-25834","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25834","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=25834"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25834\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/21643"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=25834"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=25834"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=25834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}