Laravel中使用多个数据库操作数据

人人尽说江南好,游人只合江南老。春水碧于天,画船听雨眠。 垆边人似月,皓腕凝霜雪。未老莫还乡,还乡须断肠。

定义连接

在你的数据库配置文件app/config/ database.php你可以定义任何类型的多个数据库连接。事实上,你可以定义尽可能多的连接,只要你愿意。例如,如果你的应用程序有2个 MySQL数据库中提取数据,则可以分别定义他们两个。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
return array(

'default' => 'mysql',

'connections' => array(

# 主数据库连接
'mysql' => array(
'driver' => 'mysql',
'host' => 'host1',
'database' => 'database1',
'username' => 'user1',
'password' => 'pass1'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),

# 次数据连接
'mysql2' => array(
'driver' => 'mysql',
'host' => 'host2',
'database' => 'database2',
'username' => 'user2',
'password' => 'pass2'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);

我们默认的连接(default)仍设置为 mysql,这意味着,除非我们特别指定,应用程序将继续使用 mysql 连接.

Schema

1
2
3
4
Schema::connection('mysql2')->create('lp_table', function($table)
{
$table->increments('id'):
});

DB类

1
DB::connection('mysql2')->table('article')->where...

Eloquent

1
2
3
4
5
6
7
8
9
<?php

class SomeModel extends Eloquent {

protected $connection = 'mysql2';
.......
}

?>

或者

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

class SomeController extends BaseController {

public function someMethod()
{
$someModel = new SomeModel;

$someModel->setConnection('mysql2');

$something = $someModel->find(1);

return $something;
}
.......
}

?>

https://www.itlipeng.cn/2015/12/24/%E5%9C%A8-laravel-%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%A4%9A%E4%B8%AA%E6%95%B0%E6%8D%AE%E5%BA%93%E6%93%8D%E4%BD%9C%E6%95%B0%E6%8D%AE/