[英]how to manage database in laravel
我想使用多個數據庫,我有1db/user和 1 個主數據庫,已經在配置文件中設置了主數據庫,但是如何管理用戶數據庫( db name = {user_id}_db )。 提前致謝
這是我的配置代碼
'main' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
為每個用戶創建數據庫是無用的,即使您是出於安全或任何其他目的而這樣做。 有用的 SO 鏈接MySQL 性能:多個表與單個表和分區上的索引
您的問題(連接到 Laravel 中的多個數據庫)已在此處回答。 Laravel 中如何使用多個數據庫
更新
我想,您想動態創建新數據庫並連接到它們(不使用 .env 配置)。 嘗試連接到新數據庫時,創建動態連接而不是指定“連接名稱”。 然后,使用Config::set
您可以創建新的臨時連接,然后將DB::connection
與您剛剛創建的臨時名稱一起使用。 閱讀更多https://lukers.com/2015/03/25/on-the-fly-database-connections-with-laravel-5
您可以對多個數據庫使用以下配置。
<?php
return array(
'default' => 'mysql',
'connections' => array(
# primary
'mysql' => array(
'driver' => 'mysql',
'host' => 'ip1',
'database' => 'db1',
'username' => 'user',
'password' => 'pwd'
'charset' => 'utf8',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
),
# secondary db connection
'mysql2' => array(
'driver' => 'mysql',
'host' => 'dbip2',
'database' => 'db2',
'username' => 'user',
'password' => 'pwd'
'charset' => 'utf8',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null
),
'sqlite' => array(
'driver' => 'sqlite',
'database' => __DIR__.'/../database/db.sqlite',
'prefix' => '',
),
),
);
然后你可以使用 connection() 方法:
$connection = ‘mysql2’;
Schema::connection($connection)->create(function(Blueprint $table) {
//
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.