{"id":29087,"date":"2021-06-07T11:50:00","date_gmt":"2021-06-07T08:50:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29087"},"modified":"2021-10-17T16:25:40","modified_gmt":"2021-10-17T13:25:40","slug":"como-utilizar-la-funcion-de-conexiones-de-multiples-bases-de-datos-de-laravel-en-un-sitio-web","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/como-utilizar-la-funcion-de-conexiones-de-multiples-bases-de-datos-de-laravel-en-un-sitio-web\/","title":{"rendered":"C\u00f3mo utilizar la funci\u00f3n de conexiones de m\u00faltiples bases de datos de Laravel en un sitio web"},"content":{"rendered":"<p>\u00bfEst\u00e1 buscando conectar m\u00faltiples bases de datos a su aplicaci\u00f3n Laravel? A veces, puede encontrarse con una situaci\u00f3n en la que necesite tratar con m\u00e1s de una base de datos. En este art\u00edculo, estudiamos c\u00f3mo conectar y usar m\u00faltiples bases de datos en la aplicaci\u00f3n Laravel. Laravel proporciona soporte para m\u00faltiples conexiones de bases de datos en su propio n\u00facleo.<\/p>\n<p>Por lo general, necesitamos una \u00fanica base de datos para un sitio web. Sin embargo, es posible que tenga que almacenar algunos datos sobre su aplicaci\u00f3n en otra base de datos. Trabaj\u00e9 en un proyecto de comercio electr\u00f3nico en el que quer\u00edamos enviar los detalles del pedido a una base de datos separada. En su caso, los requisitos pueden ser diferentes.<\/p>\n<p>Habiendo dicho eso, echemos un vistazo a la conexi\u00f3n y el uso de m\u00faltiples bases de datos con Laravel.<\/p>\n<h3>Agregar m\u00faltiples conexiones de base de datos en Laravel<\/h3>\n<p>Como dije, Laravel te permite conectar m\u00faltiples bases de datos. Podemos usar una plataforma de base de datos diferente como SQLite, MySQL, SQLSRV con Laravel. Para este tutorial, usar\u00e9 otra instancia de MySQL de una base de datos separada. En otras palabras, vamos a tratar con una base de datos MySQL separada como almacenamiento adicional.<\/p>\n<p>Laravel almacena una conexi\u00f3n de base de datos en el <code>config\/database.php<\/code>archivo. Para agregar otra conexi\u00f3n de MySQL tenemos que modificar este archivo.<\/p>\n<p>Agreguemos otra conexi\u00f3n llamada &#8216;mysql2&#8217;. Puede dar cualquier otro nombre a esta conexi\u00f3n. Solo aseg\u00farese de usar el mismo nombre al interactuar con la base de datos.<\/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>En el c\u00f3digo anterior, la conexi\u00f3n &#8216;mysql&#8217; es la predeterminada. Agregu\u00e9 una nueva conexi\u00f3n &#8216;mysql2&#8217; con diferentes constantes. Aqu\u00ed, pas\u00e9 las constantes como DB_DATABASE_2, DB_USERNAME_2, DB_PASSWORD_2, etc. Si su base de datos est\u00e1 alojada en otro servidor, entonces deber\u00eda cambiar las claves de DB_HOST_2 y DB_PORT_2 tambi\u00e9n. Supongo que ambas bases de datos est\u00e1n en el mismo servidor. Entonces, no voy a cambiar los valores de estas constantes.<\/p>\n<p>Laravel obtiene los valores de estas constantes usando el <code>env()<\/code>m\u00e9todo. Significa que debemos agregar otros detalles de la base de datos en un archivo &#8216;.env&#8217; como se muestra a continuaci\u00f3n.<\/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>Despu\u00e9s de realizar los pasos anteriores, terminamos de conectar otra base de datos en Laravel. Lo siguiente es interactuar con esta base de datos.<\/p>\n<h3>Ejecute la migraci\u00f3n en otra base de datos en Laravel<\/h3>\n<p>Cuando se trata de Laravel, siempre debemos crear tablas en la base de datos usando Migraciones. Digamos que queremos crear una tabla de &#8216;productos&#8217; en nuestra base de datos separada. Ejecute el siguiente comando que crear\u00e1 un archivo de migraci\u00f3n.<\/p>\n<pre><code>php artisan make:migration create_products_table<\/code><\/pre>\n<p>Crear\u00e1 un nuevo archivo dentro del directorio &#8216;base de datos \/ migraciones&#8217;. Abra el archivo en el editor y pase la conexi\u00f3n reci\u00e9n creada como se muestra a continuaci\u00f3n.<\/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>He pasado el valor &#8216;mysql2&#8217; al <code>connection<\/code>m\u00e9todo de la <code>Schema<\/code>clase. Significa que cuando ejecuta el comando migrate, este c\u00f3digo ejecuta el c\u00f3digo anterior en la otra base de datos cuya cadena de conexi\u00f3n hemos pasado.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Despu\u00e9s de ejecutar el comando anterior, dir\u00edjase a su segunda base de datos. Ahora deber\u00eda tener una tabla de &#8216;productos&#8217;.<\/p>\n<h3>Ejecutar consultas en otra base de datos<\/h3>\n<p>En Laravel, puede interactuar con la base de datos a trav\u00e9s de un <a href=\"https:\/\/laravel.com\/docs\/master\/queries\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Generador de consultas<\/a> o usando el <a href=\"https:\/\/laravel.com\/docs\/master\/eloquent\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ORM de Eloquent<\/a>.<\/p>\n<p><code>DB<\/code>fachada proporciona un m\u00e9todo llamado conexi\u00f3n que se utiliza para ejecutar consultas en otra base de datos. Escribamos una consulta sobre la conexi\u00f3n &#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 ejecutar\u00e1 autom\u00e1ticamente las consultas anteriores en la otra base de datos tomando una referencia al m\u00e9todo de conexi\u00f3n.<\/p>\n<p>Cuando se trata de Eloquent, hay 2 formas de conectar bases de datos independientes. La primera forma es usar la <code>$connection<\/code>variable dentro de su clase 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>Ahora, el modelo de &#8216;Productos&#8217; se ocupar\u00e1 \u00fanicamente de la segunda base de datos.<\/p>\n<p>En la segunda opci\u00f3n, puede crear una conexi\u00f3n sobre la marcha cuando sea necesario. De esta manera, puede interactuar con m\u00faltiples bases de datos desde un solo modelo.<\/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>Aqu\u00ed, he configurado el tiempo de ejecuci\u00f3n de la conexi\u00f3n usando el <code>setConnection()<\/code>m\u00e9todo.<\/p>\n<p>\u00a1Eso es! Espero que entiendas c\u00f3mo conectar varias bases de datos en la aplicaci\u00f3n Laravel. Comparta sus pensamientos y sugerencias en la secci\u00f3n de comentarios a continuaci\u00f3n.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/cree-un-sitio-web-en-varios-idiomas-en-php-usando-laravel-framework\/\" title=\"Cree un sitio web en varios idiomas en PHP usando Laravel Framework\">Cree un sitio web en varios idiomas en PHP usando Laravel Framework<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-cargar-y-comprimir-imagenes-en-laravel\/\" title=\"Una gu\u00eda para cargar y comprimir im\u00e1genes en Laravel\">Una gu\u00eda para cargar y comprimir im\u00e1genes en Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-instalar-y-usar-ckeditor-en-laravel\/\" title=\"C\u00f3mo instalar y usar CKEditor en Laravel\">C\u00f3mo instalar y usar CKEditor en Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQuieres saber c\u00f3mo configurar m\u00faltiples conexiones de bases de datos en laravel? En este art\u00edculo, le mostramos una gu\u00eda paso a paso sobre c\u00f3mo agregar<\/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":[495],"tags":[849],"class_list":["post-29087","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/29087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=29087"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/29087\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/21643"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=29087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=29087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=29087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}