1.跨库数据库配置
在网站跟目录下的config文件中增加database.php作为数据库配置文件。配置如下:
//当前默认数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
|
'mysql'
=> [
'driver'
=>
'mysql'
,
'host'
=> env(
'DB_HOST'
,
'localhost'
),
'port'
=> env(
'DB_PORT'
, 3306),
'database'
=> env(
'DB_DATABASE'
,
'forge'
),
'username'
=> env(
'DB_USERNAME'
,
'forge'
),
'password'
=> env(
'DB_PASSWORD'
,
''
),
'charset'
=> env(
'DB_CHARSET'
,
'utf8'
),
'collation'
=> env(
'DB_COLLATION'
,
'utf8_unicode_ci'
),
'prefix'
=> env(
'DB_PREFIX'
,
''
),
'timezone'
=> env(
'DB_TIMEZONE'
,
'+00:00'
),
'strict'
=> env(
'DB_STRICT_MODE'
, false),
],
|
1
|
----------------------------------重磅内容来袭----------------------------------------------------
|
//增加其他库
1
2
3
4
5
6
7
8
9
10
11
12
13
|
'xd_db'
=> [
'driver'
=>
'mysql'
,
'host'
=> env(
'XD_DB_HOST'
,
'localhost'
),
'port'
=> env(
'XD_DB_PORT'
, 3306),
'database'
=> env(
'XD_DB_DATABASE'
,
'forge'
),
'username'
=> env(
'XD_DB_USERNAME'
,
'forge'
),
'password'
=> env(
'XD_DB_PASSWORD'
,
''
),
'charset'
=> env(
'XD_DB_CHARSET'
,
'utf8'
),
'collation'
=> env(
'XD_DB_COLLATION'
,
'utf8_unicode_ci'
),
'prefix'
=> env(
'XD_DB_PREFIX'
,
''
),
'timezone'
=> env(
'XD_DB_TIMEZONE'
,
'+00:00'
),
'strict'
=> env(
'XD_DB_STRICT_MODE'
, false),
],
|
2.跨库Model操作
只需要在model中增加下面语句即可,使用Model方式照旧:
protected $connection='xd_db';//指定数据库
代码演示
1
2
3
4
5
6
7
8
9
10
11
12
|
class
Customer
extends
Model
{
protected
$connection
=
"xd_db"
;
//指定数据库
protected
$table
=
"customer"
;
public
$timestamps
= false;
....
}
使用Model方式不发生任何变化。
Customer::where(...);
|
3.跨库DB原生操作
DB后面通过增加connection()方法指定要连接的数据库。
注意:常见的DB操作的默认指定的数据库配置标示名为database.php中的‘mysql’。
1
2
3
|
DB::where(
'...'
)
等同于
DB::connection(
'mysql'
)->where();
|
同理,只需要指定需要连接的数据库的配置标示名即可实现跨库操作。
1
|
DB::connection(
'xd_db'
)->where();
|
4.跨库事务
默认事务操作范例:
1
2
3
4
5
6
7
8
9
10
11
|
try
{
DB::beginTransaction();
....业务操作....
DB::commit();
}
catch
(\Exception
$e
){
DB::rollback();
throw
$e
;
}
|
跨库事务
1
2
3
4
5
6
7
8
9
10
11
|
try
{
DB::connection(
'xd_db'
)->beginTransaction();
....业务操作....
DB::::connection(
'xd_db'
)->commit();
}
catch
(\Exception
$e
){
DB::::connection(
'xd_db'
)->rollback();
throw
$e
;
}
|
至此,关于laravel/lulem的所有有关跨库的操作均给出了具体操作方案。欢迎提出意见!
本文转自 hgditren 51CTO博客,原文链接:http://blog.51cto.com/phpme/2068561,如需转载请自行联系原作者