Buscar..


Pasos iniciales

Se pueden definir múltiples conexiones de base de datos, de cualquier tipo, dentro del archivo de configuración de la base de datos (probable app/config/database.php ). Por ejemplo, para extraer datos de 2 bases de datos MySQL, defina ambos por separado:

<?php
return array(

    'default' => 'mysql',

    'connections' => array(

        # Our primary database connection
        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'host1',
            'database'  => 'database1',
            'username'  => 'user1',
            'password'  => 'pass1'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

        # Our secondary database connection
        'mysql2' => array(
            'driver'    => 'mysql',
            'host'      => 'host2',
            'database'  => 'database2',
            'username'  => 'user2',
            'password'  => 'pass2'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
    ),
);

La conexión por defecto todavía se establece en mysql . Esto significa que, a menos que se especifique lo contrario, la aplicación utiliza la conexión mysql .

Usando el constructor de esquemas

Dentro de Schema Builder, use la fachada de esquema con cualquier conexión. Ejecute el método connection() para especificar qué conexión usar:

Schema::connection('mysql2')->create('some_table', function($table)
{
    $table->increments('id'):
});

Usando el generador de consultas DB

Al igual que Schema Builder, define una conexión en el Query Builder:

$users = DB::connection('mysql2')->select(...);

Usando Eloquent

Hay varias formas de definir qué conexión usar en los modelos Eloquent. Una forma es establecer la variable $ connection en el modelo:

<?php

class SomeModel extends Eloquent {

    protected $connection = 'mysql2';

}

La conexión también se puede definir en tiempo de ejecución a través del método setConnection .

<?php

class SomeController extends BaseController {

    public function someMethod()
    {
        $someModel = new SomeModel;

        $someModel->setConnection('mysql2');

        $something = $someModel->find(1);

        return $something;
    }
}

De la documentación de Laravel.

Se puede acceder a cada conexión individual a través del método de conexión en la fachada DB , incluso cuando hay múltiples conexiones definidas. El name pasado al método de connection debe corresponder a una de las conexiones enumeradas en el archivo de configuración config/database.php :

$users = DB::connection('foo')->select(...);

También se puede acceder al raw, instancia de PDO subyacente utilizando el método getPdo en una instancia de conexión:

$pdo = DB::connection()->getPdo();

https://laravel.com/docs/5.4/database#using-multiple-database-connections



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow