0

ich mysql und mongoDB in meinem Laravel Projekt verwenden wollen, weiß ich, dass ich mehrere Verbindungen Array in database.php Datei definieren und nennen sie mag:Wie verwendet man mehrere Datenbankverbindungen im Laravel-Projekt?

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

aber mein Problem ist, wie ich mongoDB und MySQL verwenden können nebeneinander in einem Projekt?

Das eigentliche Problem ist hier .env Datei, weil es nur eine Datenbank-Konfigurationen verwendet.

so lassen Sie mich klar, dass dies für Sie, das ist meine database.php Datei in Laravel v5.3:

'connections' => [ 

     'mysql' => [ 
      'driver' => 'mysql', 
      'host' => env('DB_HOST', 'localhost'), 
      'port' => env('DB_PORT', '3306'), 
      'database' => env('DB_DATABASE', 'iranad'), 
      'username' => env('DB_USERNAME', 'root'), 
      'password' => env('DB_PASSWORD', 'mysql'), 
      'charset' => 'utf8', 
      'collation' => 'utf8_unicode_ci', 
      'prefix' => '', 
      'strict' => true, 
      'engine' => null, 
     ], 

     'mongodb' => [ 
      'driver' => 'mongodb', 
      'host' => env('DB_HOST', 'localhost'), 
      'port' => env('DB_PORT', '27017'), 
      'database' => env('DB_DATABASE'), 
      'username' => env('DB_USERNAME'), 
      'password' => env('DB_PASSWORD'), 
      'options' => [ 
       'database' => 'admin' 
      ] 
     ], 

    ], 

Und das ist meine .env Datei:

APP_ENV=local 
APP_KEY=base64:NN3Me+qA1UOfdYW2SQyAXtxODazCAYBAKfFdRAqcakg= 
APP_DEBUG=true 
APP_LOG_LEVEL=debug 
APP_URL=http://localhost 

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=test 
DB_USERNAME=root 
DB_PASSWORD=mysql 

BROADCAST_DRIVER=log 
CACHE_DRIVER=file 
SESSION_DRIVER=file 
QUEUE_DRIVER=sync 

REDIS_HOST=127.0.0.1 
REDIS_PASSWORD=null 
REDIS_PORT=6379 

MAIL_DRIVER=smtp 
MAIL_HOST=mailtrap.io 
MAIL_PORT=2525 
MAIL_USERNAME=null 
MAIL_PASSWORD=null 
MAIL_ENCRYPTION=null 

PUSHER_APP_ID= 
PUSHER_KEY= 
PUSHER_SECRET= 

Wie Sie mein sehen Standard-Datenbankverbindung ist mysql, und in der .env-Dateikonfiguration ist auf mysql gesetzt, wie kann ich nun mongoDB in meiner Anwendung verwenden?

FYI: Ich möchte, dass mysql Standardverbindung sein und ich mongodb in einigen Fällen verwenden.

Antwort

0

Ich habe die Lösung dank

Sie die Variablennamen der Standard-env, wird es nicht die Funktionalität brechen von Ihnen Sie Ihre database.php etwas appication

ändern können @astroanu gefunden ändern dies wie:

'connections' => [ 
    'mysql' => [ 
     'driver' => 'mysql', 
     'host' => env('MYSQL_DB_HOST', 'localhost'), 
     'port' => env('MYSQL_DB_PORT', '3306'), 
     'database' => env('MYSQL_DB_DATABASE', 'iranad'), 
     'username' => env('MYSQL_DB_USERNAME', 'root'), 
     'password' => env('MYSQL_DB_PASSWORD', 'mysql'), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => true, 
     'engine' => null, 
    ], 

    'mongodb' => [ 
     'driver' => 'mongodb', 
     'host' => env('MONGO_DB_HOST', 'localhost'), 
     'port' => env('MONGO_DB_PORT', '27017'), 
     'database' => env('MONGO_DB_DATABASE'), 
     'username' => env('MONGO_DB_USERNAME'), 
     'password' => env('MONGO_DB_PASSWORD'), 
     'options' => [ 
      'database' => 'admin' 
     ] 
    ], 

], 

dann auf dem .env jeden Variablennamen

#sql 
MYSQL_DB_HOST=... 
MYSQL_DB_PORT=... 
MYSQL_DB_DATABASE=... 
MYSQL_DB_USERNAME=... 
MYSQL_DB_PASSWORD=... 

# mongo 
MONGO_DB_HOST=... 
MONGO_DB_PORT=... 
MONGO_DB_DATABASE=... 
MONGO_DB_USERNAME=... 
MONGO_DB_PASSWORD=... 
definieren

auf Ihre Modelle definieren geschützte Verbindungsattribut: dies entweder Ihrer Verbindungsnamen sein, sollten Sie auf der database.php

protected $connection = 'mongodb'; 
definiert

das einzige Problem für hier Sie Beziehungen zwischen Datenbanken Implementierung würde, die man unmöglich ist, Dafür müssen Sie eigene Abfragen schreiben.

FYI: Für Ihre Verbindungen in Kesselflicker Prüfung:

DB::connection('mongodb')->collection('migrations')->get(); 

Hinweis mongodb hier ist der Verbindungsname in database.php Datei und Migrationen ist die Sammlung Namen.

Verwandte Themen