2013-06-11 3 views
0

Мне нужна структура приложения SaaS в YII Framework с использованием отдельной базы данных, но в примерах в Интернете используется одна база данных. Любая информация или справочник будут приветствоваться.Структура приложения SaaS в YII с использованием отдельной базы данных

Благодаря

ответ

0

Вы можете использовать вторую БД, добавив его в свой main.php экс:

'db'=>array(
     'connectionString' => 'mysql:host=localhost;dbname=database', 
     'emulatePrepare' => true, 
     'username' => 'username', 
     'password' => 'password', 
     'charset' => 'utf8', 
     'schemaCachingDuration' => 3600, 
     'enableProfiling' => true, 
    ), 

    'db2'=>array(
     'connectionString' => 'mysql:host=localhost;dbname=database2', 
     'class'=>'CDbConnection', 
     'emulatePrepare' => true, 
     'username' => 'username', 
     'password' => 'password', 
     'charset' => 'utf8', 
     'schemaCachingDuration' => 3600, 
     'enableProfiling' => true, 
    ), 

Затем вы можете установить метод getDbConnection() внутри активных записи, которые должны использовать этот второй дб. Я бы предложил сделать родительский класс, простирающийся от CActiveRecord с помощью этого кода, а затем расширив его.

Он должен содержать:

public static $db2; 

public function getDbConnection() 
{ 
    if(self::$db2!==null) 
    return self::$db2; 
    else 
    { 
    self::$db2=Yii::app()->db2; 
    if(self::$db2 instanceof CDbConnection) 
    { 
     self::$db2->setActive(true); 
     return self::$db2; 
    } 
    else 
     throw new CDbException(Yii::t('yii','Active Record requires a "db" CDbConnection application component.')); 
    } 
} 
+0

Я попробую, спасибо – sneyder05

Смежные вопросы