配置連接
配置 .env 文件
/* 這部分是默認的數據庫設置 */
DB_CONNECTION=mysql
DB_HOST=xxx.xxx.xxx.xxx
DB_PORT=3306
DB_DATABASE=default_db_name
DB_USERNAME=default_username
DB_PASSWORD=default_password
/* 這部分是新增的數據庫設置 */
DB_HOST_NEW=xxx.xxx.xxx.xx
DB_PORT_NEW=3306
DB_DATABASE_NEW=new_db_name
DB_USERNAME_NEW=new_db_username
DB_PASSWORD_NEW=new_db_password
配置 \config\database.php 文件
/* 這是默認的設置 */
'mysql' => [
'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,
],
/* 這是需要新增加的設置內容,使用 .env 新增的內容 */
'mysql_new' => [
'driver' => 'mysql',
'host' => env('DB_HOST_NEW', 'localhost'),
'port' => env('DB_PORT_NEW', '3306'),
'database' => env('DB_DATABASE_NEW', 'forge'),
'username' => env('DB_USERNAME_NEW', 'forge'),
'password' => env('DB_PASSWORD_NEW', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
使用
Schema
在各種 Schema Builder 中使用,可以使用 Schema facade 類來連接任意想要連接的數據庫,只需要使用 connection() 方法即可,如 migration 文件中應用:
Schema::connection('mysql_new')->create('some_table', function($table)
{
$table->increments('id'):
});
Query
在 Query Builder 類中也是使用 connection() 方法選擇數據庫即可:
$users = DB::connection('mysql_new')->select(...);
Eloquent
這是連接默認數據庫的 model 文件,直接使用表即可:
// \app\Models\Users.php
class Users extends Model
{
// 數據庫 'default_db_name' 中的 users 表
protected $table = "users";
}
這是需要連接新增的數據庫的 model 文件,使用 $connection 屬性進行數據庫關聯:
// \app\Models\NewUsers.php
class NewUsers extends Model
{
// 先連接新的數據庫設置(config\database.php 新增的字段名)
protected $connection = 'mysql_new';
// 數據庫 'new_db_name' 中的 users 表
protected $table = "users";
}
然后在其他類文件中引用該 model 文件即可。
另外還可以在控制器中,運行程序的時候,通過 setConnection 方法定義連接:
<?php
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql_new');
$something = $someModel->find(1);
return $something;
}
}
在 \config\database.php 文件中,如果默認的數據庫無法連接,在使用非默認數據庫的時候,程序運行過程中會報錯,所以要先保證默認數據庫能正常連接訪問,再使用非默認的數據庫。
