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;
    }

}


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

 

 

 

 

 

 

你可能感兴趣的:(数据库)