Skip to content

Instantly share code, notes, and snippets.

@devLopez
Created June 29, 2016 13:29
Show Gist options
  • Save devLopez/73806c1ac98e3480f312d37c834f0892 to your computer and use it in GitHub Desktop.
Save devLopez/73806c1ac98e3480f312d37c834f0892 to your computer and use it in GitHub Desktop.
Conexão dinâmica com bancos de dados
<?php namespace App\Traits\Db;
use Config;
/**
* DatabaseConnectionTrait
*
* Realiza a reconfiguração do banco de dados baseado no nome da conexão
* definido no model
*
* @author Matheus Lopes Santos <[email protected]>
* @since 29/06/2016
*/
trait DatabaseConnectionTrait
{
/**
* Construtor
*/
public function __construct()
{
$this->changeConnection();
}
/**
* Cria a configuração de acordo com o nome da conexão. Neste caso não
* é necessário redefinir a conexão, pois, com a mesma setada, o Laravel
* buscará automaticamente por esta nova conexão
*/
protected function changeConnection()
{
Config.set('database.connections.'$this->connection, [
'driver' => 'sqlite',
'database' => database_path('database.sqlite'),
'prefix' => '',
]);
}
}
@devLopez
Copy link
Author

Basta adicionar este trait no model para fazer a conexão com bancos de dados dinâmicos

@edilsoncichon
Copy link

Camarada, estou iniciando no Laravel, então talvez a minha dúvida seja simples, mas se puder ajudar vai ser muito útil.
É possível adaptar esse código para bancos MySql?
Ou seja, ao invés dele setar outro arquivo SQLite, setar somente o nome de outro schema do MySql?

@devLopez
Copy link
Author

Edilson, perdoe não responder antes, pois o Gist não me avisou. É totalmente viável. Basta que, a invés da conexão do sqlite pelos dados de conexão do mysql que está no database.php

Abraço

@agkairos
Copy link

mano, como que usa isso? sou novo no laravel e preciso setar uma segunda conexão dinamicamente.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment