PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Lumen - Buat koneksi database saat runtime

Ada satu masalah utama dengan metode yang Anda tuju:

Anda tidak menginisialisasi objek konfigurasi apa pun. Lumen secara default tidak memiliki kumpulan objek konfigurasi tradisional, hingga Anda membuat config direktori di folder root Anda.

Seperti yang tertulis dalam dokumen konfigurasi Lumen:

Semua opsi konfigurasi untuk kerangka kerja Lumen disimpan dalam file .env.

Pendekatan yang Anda tuju memerlukan objek konfigurasi tradisional seperti yang digunakan di Laravel.

Untuk mendapatkan objek itu dan retail_db baru Anda koneksi database berfungsi:

  • Buat config folder di root proyek Anda
  • Salin file vendor/laravel/lumen-framework/config/database.php ke folder konfigurasi ini
  • Inisialisasi objek konfigurasi database di bootstrap/app.php . Anda dengan $app->configure('database'); (letakkan di baris 28)

Struktur folder Anda sekarang terlihat seperti ini:

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

Tentu saja Anda dapat menghapus koneksi yang tidak Anda perlukan dari larik koneksi di app/config/database.php dengan mengomentari atau menghapusnya sepenuhnya.

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

bootstrap/app.php Anda dengan perubahan:

/*
|--------------------------------------------------------------------------
| 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');

Sekarang Anda dapat menggunakan kode yang sudah Anda miliki di routes.php .

Untuk menghapus retail_db . Anda koneksi, cukup setel ke null :

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemahaman operasi batch JDBC

  2. PostgreSQL - jumlah maksimum parameter dalam klausa IN?

  3. Indeks untuk menemukan elemen dalam array JSON

  4. Masalah pemulihan basis data Heroku

  5. PostgreSQL:Jatuhkan database PostgreSQL melalui baris perintah