前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Yii2 连接多个数据库

Yii2 连接多个数据库

作者头像
hedeqiang
发布2019-12-17 21:58:35
1.7K0
发布2019-12-17 21:58:35
举报
文章被收录于专栏:LaravelCodeLaravelCode

日常生活中我们一个项目一个数据库就足够了,但是难免会有意外,会使用多个数据库进行读写操作。例如:从另一个数据库导入数据到现在的数据库 今天就探讨下,Yii2.0 如何连接多个数据库

配置

打开数据库配置文件 common\config\main-local.php,在原先的 db 配置项下面添加 db2(可随意取名字),配置第二个数据库的属性

代码语言:javascript
复制
'components' => [
    'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=test',
        'username' => '***',
        'password' => '**',
        'charset' => 'utf8',
    ],
    'db2' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=test2',
        'username' => '***',
        'password' => '***',
        'charset' => 'utf8',
    ],
    'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        'viewPath' => '@common/mail',
        // send all mails to a file by default. You have to set
        // 'useFileTransport' to false and configure a transport
        // for the mailer to send real emails.
        'useFileTransport' => true,
    ],
],

接下来就是模型的配置

代码语言:javascript
复制
namespace app\models;

use Yii;

/**
 * This is the model class for table "test2".
 *
 * @property int $id
 * @property string $name
 */
class Test2 extends \yii\db\ActiveRecord
{
    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'test2';
    }

    /**
     * @return \yii\db\Connection the database connection used by this AR class.
     */
    public static function getDb()
    {
        return Yii::$app->get('db2');
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['name'], 'string', 'max' => 60],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'id' => '编号',
            'name' => '姓名',
        ];
    }
}

上面比我们普通的模型类仅仅多了一个 getDb 的方法而已

使用 Gii 更容易生成,直接设置 Database connection ID 为我们刚才配置的 db2 就好了

使用

使用方法还是和之前一样,你可以使用 ar 进行操作

代码语言:javascript
复制
Test::find()->all();

ok,这样我们的 Yii2 就可以连接多个数据库了,总结来说就是两步:配置数据库连接、新增 getDb 方法。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置
  • 使用
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档