我需要使用单独的数据库在 YII 框架中创建一个 SaaS 应用程序结构,但是 Web 中的示例使用的是单个数据库。欢迎任何信息或手册。
谢谢
您可以通过将第二个数据库添加到您的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.'));
}
}