PHP laravel實(shí)現(xiàn)配置使用多數(shù)據(jù)庫(kù)
有的時(shí)候,我們?cè)陂_(kāi)發(fā)的過(guò)程中需要連接多個(gè)數(shù)據(jù)庫(kù)。
Laravel框架中早已為我們想到了這樣的需求。
配置很簡(jiǎn)單。
在根目錄下的/config/database.php文件中配置:
Laravel中為我們提前預(yù)設(shè)了多種類(lèi)型的數(shù)據(jù)庫(kù)連接
"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配置,配置項(xiàng)是存儲(chǔ)在根目錄下的.env文件中的。
如果使用多數(shù)據(jù)連接,則只需要,根據(jù)你的數(shù)據(jù)庫(kù)類(lèi)型,在配置你需要的數(shù)據(jù)庫(kù)連接就好了。
如下面所示:
我增加了一個(gè)mysql數(shù)據(jù)庫(kù)連接和oracle數(shù)據(jù)庫(kù)連接
"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), ], // 本地?cái)?shù)據(jù)庫(kù),存儲(chǔ)本地?cái)?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ù)庫(kù),將本地?cái)?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ù)庫(kù)連接 "oracle" => [ "driver" => "oracle", "host" => "210.30.64.37", "port" => xxx, "database" => "", "service_name" => xxxxx, "username" => xxx_xxxx, "password" => xxxx_xxxx, "charset" => "AL32UTF8", "prefix" => "", ] ],
我們?cè)谑褂闷溆嗟臄?shù)據(jù)庫(kù)連接,如下方所示:
1:使用原生sql
DB::connection("oracle")->select("SELECT * from xxxxx WHERE XH = "{$personal_id}" AND XM = "{$name}"")
2:使用laravel封裝的數(shù)據(jù)庫(kù)方法:
$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ù)庫(kù)連接相關(guān)的用戶(hù)名,連接,密碼之類(lèi)的,一般還是寫(xiě)在.env文件中的,方便我們統(tǒng)一管理。
以上就是PHP laravel實(shí)現(xiàn)配置使用多數(shù)據(jù)庫(kù)的詳細(xì)內(nèi)容,更多關(guān)于PHP laravel配置多數(shù)據(jù)庫(kù)的資料請(qǐng)關(guān)注其它相關(guān)文章!
