No .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database1
DB_USERNAME=root
DB_PASSWORD=secret
DB_CONNECTION_SECOND=mysql
DB_HOST_SECOND=127.0.0.1
DB_PORT_SECOND=3306
DB_DATABASE_SECOND=database2
DB_USERNAME_SECOND=root
DB_PASSWORD_SECOND=secret
No config/database.php
'mysql' => [
'driver' => env('DB_CONNECTION'),
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
],
'mysql2' => [
'driver' => env('DB_CONNECTION_SECOND'),
'host' => env('DB_HOST_SECOND'),
'port' => env('DB_PORT_SECOND'),
'database' => env('DB_DATABASE_SECOND'),
'username' => env('DB_USERNAME_SECOND'),
'password' => env('DB_PASSWORD_SECOND'),
],
Nota: Em mysql2
caso DB_username e db_password é o mesmo, então você pode usar env('DB_USERNAME')
que é metioned em .env
primeiras linhas.
Definir conexões
app/config/database.php
return array(
'default' => 'mysql',
'connections' => array(
# Primary/Default database connection
'mysql' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'database1',
'username' => 'root',
'password' => 'secret'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
# Secondary database connection
'mysql2' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'database2',
'username' => 'root',
'password' => 'secret'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);
Esquema
Para especificar qual conexão usar, basta executar o connection()
método
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id'):
});
Criador de consultas
$users = DB::connection('mysql2')->select(...);
Eloquente
Defina a $connection
variável no seu modelo
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
Você também pode definir a conexão em tempo de execução por meio do setConnection
método ou do on
método estático:
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql2'); // non-static method
$something = $someModel->find(1);
$something = SomeModel::on('mysql2')->find(1); // static method
return $something;
}
}
Nota Tenha cuidado ao tentar criar relacionamentos com tabelas nos bancos de dados! É possível, mas pode ser fornecido com algumas ressalvas e depende de quais banco de dados e / ou configurações de banco de dados você possui.
Usando várias conexões de banco de dados
Ao usar várias conexões, você pode acessar cada uma delas connection
através do método de conexão na DB
fachada. A name
passagem para o connection
método deve corresponder a uma das conexões listadas no seu config/database.php
arquivo de configuração:
$users = DB::connection('foo')->select(...);
Você também pode acessar a instância PDO bruta subjacente usando o método getPdo em uma instância de conexão:
$pdo = DB::connection()->getPdo();
Links Úteis
- Conexão com múltiplos bancos de dados do Laravel 5
laracasts.com
- Conecte vários bancos de dados no laravel
tutsnare.com
- Várias conexões de banco de dados no Laravel
fideloper.com
class SomeModel extends Model {
e também ter certeza de que os valores são removidos do arquivo env comoenv('DB_DATABASE', 'name')
quando você criar nova matriz de configuração DB em database.php arquivo como @sba mencionou