Nueva pregunta

Pregunta:

Fecha: 26-02-2015 11:16:27 (En Español)

Múltiples bases de datos en Laravel[Resuelta]

Pregunta, como puedo conectar varias bases de datos, para una aplicación con laravel 5???
Etiquetas: Base de Datos - Configuración - Framework - Laravel - Pregunta 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
 
frjcbbae garagebible.com