Mehrere Datenbankverbindungen mit Laravel

Datenbankverbindungen festlegen

In  app/config/database.php kann man beliebig viele Datenbankverbindungen anlegen.
In unserem Fall verwenden wir 2 MySQL Datenbanken von verschiedenen Hosts.

<?php
return array(

    'default' => 'my_first',

    'connections' => array(

        'my_first' => array(
            'driver'    => 'mysql',
            'host'      => 'my_first',
            'database'  => 'db_name1',
            'username'  => 'u1',
            'password'  => 'pass1'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

        'my_second' => array(
            'driver'    => 'mysql',
            'host'      => 'my_second',
            'database'  => 'db_name2',
            'username'  => 'u2',
            'password'  => 'pass2'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
    ),
);

Da wir default => my_first angeben, können wir db_name1 wie gewohnt verwenden.
Für my_second gilt folgendes:

Schema

Schema::connection('my_second')->create('some_table', function($table)
{
    $table->increments('id'):
});

Query

$users = DB::connection('my_second')->select(...);

Eloquent

<?php

class SomeModel extends Eloquent {

    protected $connection = 'my_second';

}

SetConnection

<?php

class SomeController extends BaseController {

    public function someMethod()
    {
        $someModel = new SomeModel;

        $someModel->setConnection('my_second');

        $something = $someModel->find(1);

        return $something;
    }

}

Manfred Brandstetter

Seit 20 Jahren selbständiger IT Berater in Österreich. Im Moment kümmere ich mich am liebsten um Servervirtualisierungen auf Debian Basis und Webprogrammierung nach neuestem Technologiestand.

More Posts - Website

Follow Me:
TwitterFacebookGoogle Plus