在saas中,多租户数据库分库管理时常常需要自定义数据库链接,并且需要支持在框架加载后再调用数据库连接。
Yii2 如何定义数据库连接要注意的是:
即除了使用/Yii::app−>set()外,还需要再多使用下面一句话:/Yii::app->$database->open();
因为在框架加载后再调用时,yii本身并不会帮打开连接。使用如下代码:
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_IP;port=3307;dbname='.$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]; }}