sql >> Databáze >  >> RDS >> PostgreSQL

Lumen - Vytvořte připojení k databázi za běhu

S metodou, kterou se chystáte, je jeden hlavní problém:

Neinicializovali jste žádný konfigurační objekt. Lumen ve výchozím nastavení nemá nastaven žádný tradiční konfigurační objekt, dokud nevytvoříte config adresář ve vaší kořenové složce.

Jak je napsáno v konfiguračních dokumentech Lumen:

Všechny možnosti konfigurace pro framework Lumen jsou uloženy v souboru .env.

Přístup, který se chystáte použít, vyžaduje tradiční konfigurační objekt, jaký se používá v Laravelu.

Získat tento objekt a svůj nový retail_db připojení k databázi funguje:

  • Vytvořte config složku v kořenovém adresáři projektu
  • Zkopírujte soubor vendor/laravel/lumen-framework/config/database.php do této konfigurační složky
  • Inicializujte objekt konfigurace databáze v souboru bootstrap/app.php pomocí $app->configure('database'); (uveďte jej na řádek 28)

Struktura vaší složky nyní vypadá takto:

├── app
├── bootstrap
├── config
   └── database.php
├── database
├── public
├── resources
├── storage
├── tests
└── vendor

Samozřejmě můžete ta připojení, která nepotřebujete, odstranit z pole připojení v app/config/database.php tím, že je okomentujete nebo je úplně odstraníte.

app/config/database.php

'connections' => [

        /*'testing' => [
            'driver' => 'sqlite',
            'database' => ':memory:',
        ],*/

        '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'),
            'username'  => 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', false),
        ],
]

Váš bootstrap/app.php se změnami:

/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| Here we will load the environment and create the application instance
| that serves as the central piece of this framework. We'll use this
| application as an "IoC" container and router for this framework.
|
*/

$app = new Laravel\Lumen\Application(
    realpath(__DIR__.'/../')
);

//$app->withFacades();
// $app->withEloquent();

$app->configure('database');

Nyní můžete použít kód, který již máte ve svém routes.php .

Chcete-li smazat retail_db připojení, stačí jej nastavit na null :

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


  1. V odkazované tabulce nejsou žádné primární nebo kandidátské klíče, které by odpovídaly seznamu odkazujících sloupců v cizím klíči

  2. Formát data SQL:Jak s ním zacházet chytře

  3. NOT IN výběr s hodnotami NULL

  4. Počáteční pole ve funkci pro agregaci vícerozměrného pole