Yii2 如何定义数据库连接

来源:互联网 发布:专业定制软件 编辑:程序博客网 时间:2024/06/05 00:13

在saas中,多租户数据库分库管理时常常需要我们自定义数据库链接,并且需要支持在框架加载后再调用数据库连接。

Yii2 如何定义数据库连接?

要注意的是:

即除了使用\Yii::app>set()使\Yii::app->$database->open();
因为在框架加载后再调用时,yii本身并不会帮我们打开连接。

<?php/** * User: chenlb */namespace backend\modules\monitorMysql\controllers\show;class 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_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];    }}
2 0
原创粉丝点击