Heim > Datenbank > MySQL-Tutorial > Wie kann ich mehrere Datenbanken in Laravel verwenden?

Wie kann ich mehrere Datenbanken in Laravel verwenden?

Patricia Arquette
Freigeben: 2024-12-21 20:10:56
Original
464 Leute haben es durchsucht

How Can I Use Multiple Databases in Laravel?

Verwendung mehrerer Datenbanken in Laravel

Laravels Vielseitigkeit erstreckt sich auf die gleichzeitige Handhabung mehrerer Datenbanken. Befolgen Sie diese Schritte, um dies zu erreichen:

Verbindungen definieren

Verwenden Sie .env >= 5.0:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mysql_database
DB_USERNAME=root
DB_PASSWORD=secret

DB_CONNECTION_PGSQL=pgsql
DB_HOST_PGSQL=127.0.0.1
DB_PORT_PGSQL=5432
DB_DATABASE_PGSQL=pgsql_database
DB_USERNAME_PGSQL=root
DB_PASSWORD_PGSQL=secret
Nach dem Login kopieren

In 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'),
],

'pgsql' => [
    'driver' => env('DB_CONNECTION_PGSQL'),
    'host' => env('DB_HOST_PGSQL'),
    'port' => env('DB_PORT_PGSQL'),
    'database' => env('DB_DATABASE_PGSQL'),
    'username' => env('DB_USERNAME_PGSQL'),
    'password' => env('DB_PASSWORD_PGSQL'),
],
Nach dem Login kopieren

Ohne .env <= 4.0:

In app/config/database.php:

return array(
    'default' => 'mysql',
    'connections' => array(
        # Primary/Default database connection
        'mysql' => array(
            'driver' => 'mysql',
            'host' => '127.0.0.1',
            'database' => 'mysql_database',
            'username' => 'root',
            'password' => 'secret'
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
        ),

        # Secondary database connection
       'pgsql' => [
            'driver' => 'pgsql',
            'host' => 'localhost',
            'port' => '5432',
            'database' => 'pgsql_database',
            'username' => 'root',
            'password' => 'secret',
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
        ]
    ),
);</p>
<p><strong>Schema/Migration</strong></p>
<p>Geben Sie die Verbindung mit der Methode „connection()“ an :</p>
<pre class="brush:php;toolbar:false">Schema::connection('pgsql')->create('some_table', function($table)
{
    $table->increments('id'):
});
Nach dem Login kopieren

Oder definieren Sie eine Verbindung am oben:

protected $connection = 'pgsql';
Nach dem Login kopieren

Query Builder

$users = DB::connection('pgsql')->select(...);
Nach dem Login kopieren

Modell

(Laravel >= 5.0)

Legen Sie die Variable $connection in Ihrem fest Modell:

class ModelName extends Model { // extend changed

    protected $connection = 'pgsql';

}
Nach dem Login kopieren

(Laravel <= 4.0)

class SomeModel extends Eloquent {
    protected $connection = 'pgsql';
}
Nach dem Login kopieren

Eloquent

Transaktionsmodus

DB::transaction(function () {
    DB::connection('mysql')->table('users')->update(['name' => 'John']);
    DB::connection('pgsql')->table('orders')->update(['status' => 'shipped']);
});</p>
<p>oder</p>
<pre class="brush:php;toolbar:false">DB::connection('mysql')->beginTransaction();
try {
    DB::connection('mysql')->table('users')->update(['name' => 'John']);
    DB::connection('pgsql')->beginTransaction();
    DB::connection('pgsql')->table('orders')->update(['status' => 'shipped']);
    DB::connection('pgsql')->commit();
    DB::connection('mysql')->commit();
} catch (\Exception $e) {
    DB::connection('mysql')->rollBack();
    DB::connection('pgsql')->rollBack();
    throw $e;
}
Nach dem Login kopieren

Du kann die Verbindung auch zur Laufzeit angeben:

class SomeController extends BaseController {
    public function someMethod()
    {
        $someModel = new SomeModel;
        $someModel->setConnection('pgsql'); // non-static method
        $something = $someModel->find(1);
        $something = SomeModel::on('pgsql')->find(1); // static method
        return $something;
    }
}
Nach dem Login kopieren

Beziehungsüberlegungen

Das Herstellen von Beziehungen über Datenbanken hinweg ist möglich, erfordert jedoch eine sorgfältige Handhabung. Es hängt von der spezifischen Datenbank und den verwendeten Einstellungen ab.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Datenbanken in Laravel verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage