yii同一个控制器操作多个数据库表

main.php

        'db1'=>array(
            'class'=>'CDbConnection',
            'connectionString' => 'mysql:host=localhost;dbname=test1',
            'emulatePrepare' => true,
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
        ),
        'db2'=>array(
            'class'=>'CDbConnection',
            'connectionString' => 'mysql:host=localhost;dbname=test',
            'emulatePrepare' => true,
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
        ),


 

建立数据库表:

Create a table named testpost in db1 as follows:

DROP TABLE IF EXISTS `testpost`;
CREATE TABLE IF NOT EXISTS `post` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `title` VARCHAR(255) NOT NULL,
    `text` TEXT NOT NULL,
    PRIMARY KEY  (`id`)
);

Create a table named test1comment in db2 as follows:

DROP TABLE IF EXISTS `test1comment`;
    CREATE TABLE IF NOT EXISTS `test1comment` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `text` TEXT NOT NULL,
    `postId` INT(10) UNSIGNED NOT NULL,
    PRIMARY KEY  (`id`)
);

 

控制器DbController.php

<?php
class DbController extends Controller
{
    public function actionIndex()
    {

        $post = new Testpost();
        $post->title = "Post #".rand(1, 1000);
        $post->text = "text";
        $aa=$post->save();
        echo '<h1>Posts</h1>';
        
        $posts = Testpost::model()->findAll();
        foreach($posts as $post)
        {
            echo $post->title."<br />";
        }
        echo "<hr>";

        $comment = new Test1comment();
        $comment->postId = $post->id;
        $comment->text = "comment #".rand(1, 1000);
        $comment->save();
        
        echo '<h1>Comments</h1>';
        
        $comments = Test1comment::model()->findAll();
        foreach($comments as $comment)
        {
            echo $comment->text."<br />";
        }
    }
}


 

模型Testpost.php

<?php
class Testpost extends CActiveRecord
{
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }
    
//    public function tableName()
//    {
//        return 'testpost';
//    }
    public function getDbConnection()
    {
        return Yii::app()->db2;
    }
}


 

模型Test1comment.php

<?php
class Test1comment extends CActiveRecord
{
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }
//    public function tableName()
//    {
//        return 'testpost';
//    }
    public function getDbConnection()
    {
        return Yii::app()->db1;
    }

}


然后执行控制器中的方法,即成功在一个控制器方法中操作两个数据库。

 

 

 

 

 

 

转载于:https://www.cnblogs.com/jami918/archive/2013/04/28/3049565.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值