PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Lumen - Tạo kết nối cơ sở dữ liệu trong thời gian chạy

Có một vấn đề chính với phương pháp bạn đang sử dụng:

Bạn đã không khởi tạo bất kỳ đối tượng cấu hình nào. Lumen theo mặc định không có bộ đối tượng cấu hình truyền thống, cho đến khi bạn tạo một config thư mục trong thư mục gốc của bạn.

Như đã viết trong tài liệu cấu hình Lumen:

Tất cả các tùy chọn cấu hình cho khung Lumen được lưu trữ trong tệp .env.

Cách tiếp cận bạn đang thực hiện yêu cầu đối tượng cấu hình truyền thống như được sử dụng trong Laravel.

Để lấy đối tượng đó và retail_db mới của bạn kết nối cơ sở dữ liệu hoạt động:

  • Tạo config thư mục trong thư mục gốc dự án của bạn
  • Sao chép tệp vendor/laravel/lumen-framework/config/database.php vào thư mục cấu hình này
  • Khởi tạo đối tượng cấu hình cơ sở dữ liệu trong bootstrap/app.php của bạn với $app->configure('database'); (đặt nó ở dòng 28)

Cấu trúc thư mục của bạn bây giờ trông giống như thế này:

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

Tất nhiên, bạn có thể xóa những kết nối mà bạn không cần khỏi mảng kết nối trong app/config/database.php bằng cách nhận xét hoặc xóa chúng hoàn toàn.

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 của bạn với những thay đổi:

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

Bây giờ, bạn có thể sử dụng mã bạn đã có trong routes.php của mình .

Để xóa retail_db của bạn kết nối, chỉ cần đặt nó thành 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. in giá trị của một biến trong postgresql

  2. Django, mod_wsgi, psycopg2 Không đúng Định cấu hình:Lỗi khi tải mô-đun psycopg2:Không có mô-đun nào có tên _psycopg

  3. Cách đặt thời gian chờ kết nối trong SQLAlchemy

  4. Làm cách nào để lấy truy vấn thuộc tính cột từ tên bảng bằng PostgreSQL?

  5. Tổng quan về pgModeler cho PostgreSQL