在saas中,多租户数据库分库管理时常常需要自定义数据库链接,并且需要支持在框架加载后再调用数据库连接。
Yii2 如何定义数据库连接要注意的是:
即除了使用/Yii::app&#8722>set()外,还需要再多使用下面一句话:/Yii::app->$database->open()
因为在框架加载后再调用时,yii本身并不会帮打开连接。使用如下代码:
<?php/** * User: chenlb */namespace backend/modules/monitorMysql/controllers/showclass AllDatabases extends /yii/base/Action{ private static $_conn = [] public function run() { // Create Test DB Connection $db = $this->getDb('数据库名称') var_dump($db->getSchema()->getTableSchema('log')->columns['id']->isPrimaryKey) exit } /** * 得到数据库连接 */ public function getDb($database) { if(!isset(self::$_conn[$database])){ $connInfo = [ 'class' => 'yii/db/Connection', 'dsn' => 'mysql:host=HOST_IPport=3307dbname='.$database, 'username' => 'username', 'password' => 'password', 'charset' => 'utf8' ] /Yii::$app->set($database, $connInfo) /Yii::$app->$database->open() self::$_conn[$database] = /Yii::$app->$database } return self::$_conn[$database] }}欢迎分享,转载请注明来源:内存溢出
评论列表(0条)