Pregunta:
Fecha: 26-02-2015 11:16:27
(En Español)
Votos: 1 - Respuestas: 1 - Vistas: 20 Compartir en: Google Facebook Twitter LinkedIn Link
Múltiples bases de datos en Laravel[Resuelta]
Pregunta, como puedo conectar varias bases de datos, para una aplicación con laravel 5???Votos: 1 - Respuestas: 1 - Vistas: 20 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 27-02-2015 07:32:02 Después de buscarle un rato, por fin encontré como conectar 4 bases de datos a una aplicación que estoy desarrollando con el framework laravel 5, ya que con todos los cambios que sufrió desde la versión anterior, pensé que seria algo mas complejo, pero no...
Simplemente hay que agregar unas lineas en el archivo .env
... DB_HOST=192.168.0.xxx DB_DATABASE=firstDB DB_USERNAME=userdb DB_PASSWORD=userpw DB_DATABASE1=OtherDB DB_USERNAME1=userdb1 DB_PASSWORD1=userpw2 ....
El nombre de las constantes se pueden definir como se desee, yo simplemente le agregue un 1,2.. al final para diferenciarlas, en realidad no me afecta en nada..
En el el archivo /config/database.php llamamos a las constantes definidas en el archivo .env
... 'conn1' => [ 'driver' => 'sqlsrv', 'host' => env('DB_HOST', 'DB_HOST'), 'database' => env('DB_DATABASE', 'DB_DATABASE'), 'username' => env('DB_USERNAME', 'DB_USERNAME'), 'password' => env('DB_PASSWORD', 'DB_PASSWORD'), 'prefix' => '', ], 'conn2' => [ 'driver' => 'sqlsrv', 'host' => env('DB_HOST', 'DB_HOST'), 'database' => env('DB_DATABASE1', 'DB_DATABASE1'), 'username' => env('DB_USERNAME1', 'DB_USERNAME1'), 'password' => env('DB_PASSWORD1', 'DB_PASSWORD1'), 'prefix' => '', ], ..
Haciendo esto ya podemos acceder a cada conexión de forma independiente a través del objeto DB, ya sea desde algún controlador o un modelo..
Ejemplo en un modelo.
namespace App\Models; use Eloquent; use DB; class myOrder extends Eloquent { protected $connection = 'conn2'; protected $table = 'Orders'; public static function getOrders(){ $order = new myOrder; $today = date("m/d/Y"); $tomorrow = date("m/d/Y", strtotime("tomorrow")); $query = DB::connection($order->connection) ->table($order->table) ->select('OrderNumber' ,'CustomerID' ,'Shipping' ,'ShipName' )->whereBetween('OrderDate',array($today,$tomorrow)); return $query; } }
Ya desde un controlador podemos llamar al método estático, y crear el objeto, este objeto no solamente contiene la información de la consulta, si no que también provee otros métodos que nos facilitan la vida, uno de ellos es paginate()..
... $orders = MyOrder::getOrders()->paginate(5); ...
Saludos Votos: 2 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión