首页 > 数据库 >Yii2连接多个数据库

Yii2连接多个数据库

时间:2023-05-22 19:22:56浏览次数:63  
标签:return db 数据库 blogdb 连接 public id Yii2 class

1、使用高级模板 yii2-app-advanced

2、设置 common\config\main-local.php 本地文件

'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=yii2advanced',
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
        ],
        // 连接另个数据库,注意使用gii生成的时候选择对应的数据库
        'blogdb' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=blogdb',
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
            // 'tablePrefix' => 'cp_', // 表前缀
        ],
        '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,
        ],
       ...
    ],

3、第三步

  3.1、第一种,使用 gii模式生成Model、controllers等,

    - 选择更改的数据库名 Database Connection ID 改为 blogdb

    - Table Name 改为 blogdb 中数据表名称 post

  生成后的 models 中的模板 Post.php 中自动含有连接 blogdb 数据库的方法

  

  public static function getDb()
    {
        return Yii::$app->get('blogdb');
    }

  3.2、手动创建对应 model 

  

<?php

namespace common\models;

use Yii;

/**
 * This is the model class for table "post".
 *
 * @property int $id
 * @property string $title
 * @property string $content
 * @property string|null $tags
 * @property int $status
 * @property int|null $create_time
 * @property int|null $update_time
 * @property int $author_id
 *
 * @property Adminuser $author
 * @property Comment[] $comments
 * @property Poststatus $status0
 */
class Post extends \yii\db\ActiveRecord
{
    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'post';
    }

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

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['title', 'content', 'status', 'author_id'], 'required'],
            [['content', 'tags'], 'string'],
            [['status', 'create_time', 'update_time', 'author_id'], 'integer'],
            [['title'], 'string', 'max' => 128],
            [['author_id'], 'exist', 'skipOnError' => true, 'targetClass' => Adminuser::class, 'targetAttribute' => ['author_id' => 'id']],
            [['status'], 'exist', 'skipOnError' => true, 'targetClass' => Poststatus::class, 'targetAttribute' => ['status' => 'id']],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'title' => 'Title',
            'content' => 'Content',
            'tags' => 'Tags',
            'status' => 'Status',
            'create_time' => 'Create Time',
            'update_time' => 'Update Time',
            'author_id' => 'Author ID',
        ];
    }

    /**
     * Gets query for [[Author]].
     *
     * @return \yii\db\ActiveQuery
     */
    public function getAuthor()
    {
        return $this->hasOne(Adminuser::class, ['id' => 'author_id']);
    }

    /**
     * Gets query for [[Comments]].
     *
     * @return \yii\db\ActiveQuery
     */
    public function getComments()
    {
        return $this->hasMany(Comment::class, ['post_id' => 'id']);
    }

    /**
     * Gets query for [[Status0]].
     *
     * @return \yii\db\ActiveQuery
     */
    public function getStatus0()
    {
        return $this->hasOne(Poststatus::class, ['id' => 'status']);
    }
}

 

标签:return,db,数据库,blogdb,连接,public,id,Yii2,class
From: https://www.cnblogs.com/cp-cookie/p/17421501.html

相关文章

  • 利用Python爆破数据库备份文件
    某次测试过程中,发现PHP备份功能代码如下://根据时间生成备份文件名$file_name='D'.date('Ymd').'T'.date('His');$sql_file_name=$file_name.'.sql';那么形成的文件名格式如:D20180118T101433.sql,理论上是可以爆破的,于是写了一段Python脚本来尝试爆破。Py......
  • 关于MySQL数据库的加密解密问题
    SELECTMD5(‘123456’);结果显示的密文即为:e10adc3949ba59abbe56e057f20f883e解密MySQL中的MD5加密密码,需要使用MySQL中的UNHEX()函数。UNHEX()函数可以接收一个十六进制格式的参数,将其转换为原始字符串格式。例如我们可以这样使用UNHEX()函数解密前面我们生成的初始密文:SELEC......
  • 成长笔记二、MySQL数据库--学生管理系统数据库手写SQL实现(实践篇)
    学生对象---->学生表(student)老师对象---->老师表(teacher)课程对象---->课程表(course)成绩对象---->成绩表(score)班级对象---->班级表(前缀_class,因为user或class等英文单词是程序中的关键字.尽量不直接用)等.....数据库设计设计参考上篇博客https://ww......
  • 1千多求职简历写作大全ACCESS\EXCE数据库
    简历是用于应聘的书面交流材料,它向未来的雇主表明自己拥有能够满足特定工作要求的技能、态度、资质和资信。成功的简历就是一件营销武器,它向未来的雇主证明自己能够解决他的问题或者满足他的特定需要,因此确保能够得到会使自己成功的面试。数据库包含详细分类有:简历范文(250条)、简......
  • 读取数据库JSON格式数据信息处理办法记录
    遇到的问题:现有代码如下defListQuery(self):sql01="SELECTcontentFROMzt_user_customdata\WHERErealname='alarm-server'ANDaccount='alarm-server'"result01=self.CommonQueryFunc(sql01)result02=str(resu......
  • 10g中如何修改数据库字符集?
    SQL>!uname-aLinuxroger2.6.9-42.ELsmp#1SMPWedJul1223:27:17EDT2006i686i686i386GNU/LinuxSQL>selectuserenv('language')fromdual;USERENV('LANGUAGE')----------------------------------------------------AMER......
  • 空间数据库-msyql空间数据大纲
    MySql支持的类型点POINT(1520) 线LINESTRING(00,1010,2025,5060) 面POLYGON((00,100,1010,010,00),(55,75,77,57,55)) 多个点MULTIPOINT(00,2020,6060) 多个线MULTILINESTRING((1010,2020),(1515,3015)) 多个面MULTI......
  • 通过java.sql.DriverManager获取多数据源连接
    importlombok.Data;importlombok.SneakyThrows;importorg.springframework.util.StringUtils;importjava.sql.Connection;importjava.sql.Driver;importjava.sql.DriverManager;publicclassJdbcDriverManger{@SneakyThrowspublicstaticConnecti......
  • python学习笔记32:操作sqlite数据库
    importsqlite3#1.创建数据库连接#如果test.db存在,则建立连接,返回connect对象#如果test.db不存在,则新建数据库,再建立连接,返回connect对象conn=sqlite3.connect(database='test.db')#2.创建cursor对象cursor=conn.cursor()#SQL指令sql='''......
  • ACID数据库事务的四个特性
    ACID数据库事务的四个特性,这四个特性包括:原子性(Atomicity):事务是一个原子操作,要么全部执行成功提交,要么全部失败回滚。如果一个事务执行了一半,那么数据库会回滚所有已经完成的操作,以保证事务的原子性。一致性(Consistency):在事务开始和结束时,数据库必须保持一致性状态。事务执行......