PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Lumen - Създаване на връзка с базата данни по време на изпълнение

Има един основен проблем с метода, който използвате:

Не сте инициализирали никакъв конфигурационен обект. Lumen по подразбиране няма традиционен набор от обекти за конфигурация, докато не създадете config директория в основната ви папка.

Както е написано в документите за конфигурация на Lumen:

Всички опции за конфигурация за рамката на Lumen се съхраняват във файла .env.

Подходът, който използвате, изисква традиционния конфигурационен обект, както се използва в Laravel.

За да получите този обект и вашия нов retail_db връзката с базата данни работи:

  • Създайте config папка в корена на вашия проект
  • Копирайте файла vendor/laravel/lumen-framework/config/database.php към тази конфигурационна папка
  • Инициализирайте конфигурационния обект на базата данни във вашия bootstrap/app.php с $app->configure('database'); (поставете го на ред 28)

Структурата на папките ви сега изглежда така:

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

Разбира се, можете да премахнете онези връзки, които не са ви необходими от масива с връзки в app/config/database.php като ги коментирате или премахнете напълно.

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 с промените:

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

Сега можете да използвате кода, който вече имате във вашия routes.php .

За да изтриете вашия retail_db връзка, просто го задайте на 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. Postgresql SQL GROUP BY интервал от време с произволна точност (до мили секунди)

  2. Как да конвертирате епохата на Unix във времева марка

  3. Изберете произволен ред от PostgreSQL таблица с претеглени вероятности за редове

  4. интернационализиран регулярен израз в postgresql

  5. Име на динамична таблица на SQL заявка в FOR