最近公司新项目有操作多个数据库的需求,我们准备选择在 PHP7.0 中使用 Laravel 5.2.
下面是我在操作过程中的一些纪要。
<?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 :
使用 connection() 链接数据库
Schema::connection('mysql2')->create('lp_table', function($table) { $table->increments('id'): });
常用的数据库操作,类似于Schema,例如查询:
$users = DB::connection('mysql2')->select(...);
Eloquent:
您也可以定义你的数据库模型 (Model)使用.
一种方法是在模型中设置 $connection 连接变量:
<?php class SomeModel extends Eloquent { protected $connection = 'mysql2'; ....... } ?> 另外一种方式是:
<?php class SomeController extends BaseController { public function someMethod() { $someModel = new SomeModel; $someModel->setConnection('mysql2'); $something = $someModel->find(1); return $something; } ....... }
?> 注意事项:
如果是同服务器跨库可以写成:
mysql为 protected $table = ‘snail.lp_user';