sql >> Database teknologi >  >> RDS >> PostgreSQL

Lumen - Opret databaseforbindelse ved kørsel

Der er et hovedproblem med den metode, du går efter:

Du har ikke initialiseret noget konfigurationsobjekt. Lumen har som standard ikke noget traditionelt konfigurationsobjektsæt, før du opretter en config mappe i din rodmappe.

Som skrevet i Lumen-konfigurationsdokumenterne:

Alle konfigurationsmulighederne for Lumen-rammeværket er gemt i .env-filen.

Den tilgang, du går efter, kræver det traditionelle konfigurationsobjekt, som det bruges i Laravel.

For at få det objekt og din nye retail_db databaseforbindelse fungerer:

  • Opret en konfiguration mappe i dit projektrod
  • Kopiér filen vendor/laravel/lumen-framework/config/database.php til denne konfigurationsmappe
  • Initialiser databasekonfigurationsobjektet i din bootstrap/app.php med $app->configure('database'); (sæt det på linje 28)

Din mappestruktur ser således ud nu:

├── app├── bootstrap├── config └── database.php├── database├── public├── ressourcer├─────├ kode>

Selvfølgelig kan du fjerne de forbindelser, du ikke har brug for, fra forbindelsesarrayet i app/config/database.php ved at kommentere eller fjerne dem helt.

app/config/database.php

'connections' => [ /*'testing' => [ 'driver' => 'sqlite', 'database' => ':hukommelse:', ],*/ 'sqlite' => [ 'driver' => 'sqlite', 'database' => env('DB_DATABASE', base_path('database/database.sqlite')), 'prefix' => env('DB_PREFIX', ''), ], ' mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', 3306), 'database' => env ('DB_DATABASE', 'forge'), 'brugernavn' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => env('DB_CHARSET ', 'utf8'), 'collation' => env('DB_COLLATION', 'utf8_unicode_ci'), 'prefix' => env('DB_PREFIX', ''), 'timezone' => env('DB_TIMEZONE', ' +00:00'), 'strict' => env('DB_STRICT_MODE', falsk), ],] 

Din bootstrap/app.php med ændringerne:

/*|------------------------------------------------ ----------------------------------| Opret applikationen|----------------------------------------------------- ----------------------------|| Her vil vi indlæse miljøet og oprette applikationsforekomsten| der fungerer som den centrale del af denne ramme. Vi bruger dette| applikation som en "IoC"-beholder og router for denne ramme.|*/$app =new Laravel\Lumen\Application( realpath(__DIR__.'/../'));//$app->withFacades();/ / $app->withEloquent();$app->configure('database');

Nu kan du bruge den kode, du allerede har i din routes.php .

For at slette din retail_db forbindelse, skal du bare indstille den til null :

$config->set('database.connections.retail_db', null); 


  1. MySQL/MariaDB - bestil efter indvendig underforespørgsel

  2. Forespørgsel timeout, når den udføres fra web, men superhurtig, når den udføres fra SSMS

  3. Hvad er den bedste måde at forbinde mellem Android og Oracle-databasen?

  4. Hvordan nulstiller jeg postgresql 9.2 standardbruger (normalt 'postgres') adgangskode på mac os x 10.8.2?