一个简单多库配置
在根目录找到.env文件,因为我的库在同一ip下,所以我直接定义一个库名
dbname1
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test1
DB_USERNAME=root
DB_PASSWORD=1234
#dbname2
DB_DATABASE_1=test2
然后找到根目录下config/databses.php
dbname1
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'test1'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', '1234'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => 'sys_',
'strict' => true,
'engine' => null,
],
#dbname2
'mysql_test2' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE_1', 'test2'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', '1234'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => 'sys_',
'strict' => true,
'engine' => null,
],
然后咱们再创建个TaskModel进行测试
首先引用use Illuminate\Support\Facades\DB;
#创建个show1方法 #dbname1
public function show1()
{
$show = DB::table('users')->get();
return show;
}
#然后创建个show2方法 dbname2
public function show2()
{
$show = DB::connection('mysql_test2')->table('users')->get();
return show;
}
最后我们在controller实例化model
$model=new Task(); //实例化model
$data = $model -> show1(); //调用model层中方法
最后补充一下,我们结果集是对象:
我们可以通过->get()->map(function ($value) {return (array)$value;})->toArray();让结果集变成数组格式
本作品采用《CC 协议》,转载必须注明作者和本文链接
结果集转化,你也可以封一个这样的方法,进行格式转化
public function objToArr($object) {
//先编码成json字符串,再解码成数组
return json_decode(json_encode($object), true);
}
可以在model里定义connection
@lovecn 是的,直接 protected $connection='对应的库名'