PHP laravel實現(xiàn)配置使用多數(shù)據(jù)庫
有的時候,我們在開發(fā)的過程中需要連接多個數(shù)據(jù)庫。
Laravel框架中早已為我們想到了這樣的需求。
配置很簡單。
在根目錄下的/config/database.php文件中配置:
Laravel中為我們提前預設了多種類型的數(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,
],
],默認連接的是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();
最后,還是強調(diào)一句,數(shù)據(jù)庫連接相關(guān)的用戶名,連接,密碼之類的,一般還是寫在.env文件中的,方便我們統(tǒng)一管理。
以上就是PHP laravel實現(xiàn)配置使用多數(shù)據(jù)庫的詳細內(nèi)容,更多關(guān)于PHP laravel配置多數(shù)據(jù)庫的資料請關(guān)注腳本之家其它相關(guān)文章!

