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