Laravel使用多数据库
一 设置数据库信息
//第一个数据库的相关信息
‘mysql’ => [
‘driver’ => ‘mysql’,
‘url’ => env(‘DATABASE_URL’),
‘host’ => env(‘DB_HOST’, ‘127.0.0.1’),
‘port’ => env(‘DB_PORT’, ‘3306’),
‘database’ => ‘blog’, //第一个库的库名字
‘username’ => env(‘DB_USERNAME’, ‘forge’),
‘password’ => env(‘DB_PASSWORD’, ‘’),
‘unix_socket’ => env(‘DB_SOCKET’, ‘’),
‘charset’ => ‘utf8mb4’,
‘collation’ => ‘utf8mb4_unicode_ci’,
‘prefix’ => ‘te’, //第一个库的表前缀
‘prefix_indexes’ => true,
‘strict’ => true,
‘engine’ => null,
‘options’ => extension_loaded(‘pdo_mysql’) ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env(‘MYSQL_ATTR_SSL_CA’),
]) : [],
],
//第二个库的相关信息
‘mysql2’ => [
‘driver’ => ‘mysql’,
‘url’ => env(‘DATABASE_URL’),
‘host’ => env(‘DB_HOST’, ‘127.0.0.1’),
‘port’ => env(‘DB_PORT’, ‘3306’),
‘database’ => ‘blog2’, //第二个库的库名字
‘username’ => env(‘DB_USERNAME’, ‘forge’),
‘password’ => env(‘DB_PASSWORD’, ‘’),
‘unix_socket’ => env(‘DB_SOCKET’, ‘’),
‘charset’ => ‘utf8mb4’,
‘collation’ => ‘utf8mb4_unicode_ci’,
‘prefix’ => ‘te2_’, //第二个库的表前缀
‘prefix_indexes’ => true,
‘strict’ => true,
‘engine’ => null,
‘options’ => extension_loaded(‘pdo_mysql’) ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env(‘MYSQL_ATTR_SSL_CA’),
]) : [],
],
二 使用
1 Eloquent 方式
1.1 创建表 这里我创建了两个user表
// usermodel设置了connection 连接的是名字为 mysql配置里的数据库
class UserModel extends Model
{
protected $connection = 'mysql';
protected $table='user';
}
//userTwoModel 连接的是配置名为mysql2的数据库
class UserTwoModel extends BaseModel
{
protected $connection = 'mysql2';
protected $table = 'user';
}
1.2 使用
$user = UserTwoModel::find(1)->toArray();
得到结果
$user = UserModel::find(1)->toArray();
得到结果
2 DB的使用
(有些复杂的语句,需要使用到原生mysql语句 这时候我们需要会DB也能做到多数据切换)
2.1
//使用connection 指定要连接的数据库
$user = Db::connection(‘mysql’)->select(“select * from te_user where id=1”);
得到结果
第二个数据库的使用
$user = Db::connection('mysql2')->select("select * from te2_user where id=1");
得到结果