如何使用独立的数据库 [ 求助交流 ]
网站有个别模块需要使用独立的数据库,请问如何才能在一个项目中使用多个数据库? 如:$connection = new \yii\db\Connection([
'dsn' => $dsn,
'username' => $username,
'password' => $password,
]); $connection->open(); 这种办法可以独立使用一个数据库,可是有个缺点就是只能执行sql语句, 像text::find()->normalStatus()->count();这种的语句无法使用,这时会导致一个问题就是ActiveDataProvider分页组件使用不了,请问有什么解决办法吗?
共 1 条回复
-
wonderful60 回复于 2015-09-01 16:20 举报
可以类似这样处理。
main-local.php:'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=192.168.80.1;dbname=test1;port=3306', 'username' => 'root', 'password' => '123456', 'charset' => 'utf8', ], 'db2' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=192.168.80.1;dbname=test2;port=3306', 'username' => 'root', 'password' => '123456', 'charset' => 'utf8', ],
Model:
$connection = \Yii::$app->get ( "db" ); 或 $connection = \Yii::$app->get ( "db2" );
共 9 条回复langya1260 回复于 2015-09-01 17:30 回复@ftdxl 在对应表的model里设置你要使用哪个库
@langya1260 谢谢,找到设置办法了
@asialong 层主的办法也是可以的,不过层主的办法是设置一个全局的数据库连接,如果你只是想独立链接一个数据库的话,可以在model中重写getDb方法,如下
public static function getDb(){ $connection = new \yii\db\Connection([ 'dsn' => 'mysql:host=localhost;dbname=xxx, 'username' => 'root', 'password' => '', ]); $connection->open(); return $connection; }
langya1260 觉得很赞
ftdxl
注册时间:2015-09-01
最后登录:2017-04-19
在线时长:4小时28分
最后登录:2017-04-19
在线时长:4小时28分
- 粉丝2
- 金钱50
- 威望0
- 积分90