PHP laravel實現(xiàn)配置使用多數(shù)據(jù)庫
有的時候,我們在開發(fā)的過程中需要連接多個數(shù)據(jù)庫。
Laravel框架中早已為我們想到了這樣的需求。
配置很簡單。
在根目錄下的/config/database.php文件中配置:
Laravel中為我們提前預(yù)設(shè)了多種類型的數(shù)據(jù)庫連接
'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'url' => env('DATABASE_URL'), 'database' => env('DB_DATABASE', database_path('database.sqlite')), 'prefix' => '', 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), ], 'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), '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' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], 'pgsql' => [ 'driver' => 'pgsql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, 'schema' => 'public', 'sslmode' => 'prefer', ], 'sqlsrv' => [ 'driver' => 'sqlsrv', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '1433'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, ], ],
默認(rèn)連接的是mysql配置,配置項是存儲在根目錄下的.env文件中的。
如果使用多數(shù)據(jù)連接,則只需要,根據(jù)你的數(shù)據(jù)庫類型,在配置你需要的數(shù)據(jù)庫連接就好了。
如下面所示:
我增加了一個mysql數(shù)據(jù)庫連接和oracle數(shù)據(jù)庫連接
'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'url' => env('DATABASE_URL'), 'database' => env('DB_DATABASE', database_path('database.sqlite')), 'prefix' => '', 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), ], // 本地數(shù)據(jù)庫,存儲本地數(shù)據(jù) 'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', 'xxxxx'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', xxxx), 'username' => env('DB_USERNAME', xxxx), 'password' => env('DB_PASSWORD', xxxxxxx'), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => false, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], // 線上數(shù)據(jù)庫,將本地數(shù)據(jù),同步至線上數(shù)據(jù) 'mysql_base' => [ 'driver' => 'mysql', 'read' => [ 'host' => env('DB_HOST_BASE', 'xxxxx'), ], 'write' => [ 'host' => env('DB_HOST_BASE', 'xxxxx') ], 'port' => env('DB_PORT_BASE', xxxx), 'database' => env('DB_DATABASE_BASE', xxxx), 'username' => env('DB_USERNAME_BASE', xxxxxx), 'password' => env('DB_PASSWORD_BASE', 'xxxxx'), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ], 'pgsql' => [ 'driver' => 'pgsql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, 'schema' => 'public', 'sslmode' => 'prefer', ], 'sqlsrv' => [ 'driver' => 'sqlsrv', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '1433'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, ], // oracle 數(shù)據(jù)庫連接 'oracle' => [ 'driver' => 'oracle', 'host' => '210.30.64.37', 'port' => xxx, 'database' => '', 'service_name' => xxxxx, 'username' => xxx_xxxx, 'password' => xxxx_xxxx, 'charset' => 'AL32UTF8', 'prefix' => '', ] ],
我們在使用其余的數(shù)據(jù)庫連接,如下方所示:
1:使用原生sql
DB::connection('oracle')->select("SELECT * from xxxxx WHERE XH = '{$personal_id}' AND XM = '{$name}'")
2:使用laravel封裝的數(shù)據(jù)庫方法:
$userinfo = DB::connection('mysql_base')->table('user') ->where('personal_id', '=', $data['personal_id']) ->where('name', '=', $data['name']) ->where('school_id', '=', $data['school_id']) ->select('id', 'type', 'school_id', 'personal_id', 'name', 'email', 'ilab_user', 'ilab_pwd') ->first();
最后,還是強(qiáng)調(diào)一句,數(shù)據(jù)庫連接相關(guān)的用戶名,連接,密碼之類的,一般還是寫在.env文件中的,方便我們統(tǒng)一管理。
以上就是PHP laravel實現(xiàn)配置使用多數(shù)據(jù)庫的詳細(xì)內(nèi)容,更多關(guān)于PHP laravel配置多數(shù)據(jù)庫的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
php設(shè)計模式之單例、多例設(shè)計模式的應(yīng)用分析
本篇文章是對php設(shè)計模式中的單例與多例設(shè)計模式的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06