我试图在同一台服务器上运行相同的代码库,但环境设置不同,我试图实现的操作非常简单: 如果用户转到:https://server/app:This加载生产环境 如果用户转到:https://server/app-test:此加载开发环境,我将需要加载不同的唯一东西是数据库连接。Yii2:在相同的代码基础上设置多个环境
是否有任何可能的方式做到这一点?
感谢
我试图在同一台服务器上运行相同的代码库,但环境设置不同,我试图实现的操作非常简单: 如果用户转到:https://server/app:This加载生产环境 如果用户转到:https://server/app-test:此加载开发环境,我将需要加载不同的唯一东西是数据库连接。Yii2:在相同的代码基础上设置多个环境
是否有任何可能的方式做到这一点?
感谢
看来你有两个不同的目录,如果是这样的话,使用上都应用了两种不同的连接。
或者
我认为你正在努力实现以下几点:
一个应用程序,不同的数据库连接。如果这是正确的,继续执行以下步骤:
创建数据库连接,说db.php中在你的config目录
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=dbname',
'username' => 'user',
'password' => 'password',
'charset' => 'utf8',
];
?>
调用文件db2.php在web.php文件,在组件部分:不管你想要去使用这个数据库连接
'db2' => require(__DIR__ . '/db2.php'),
,覆盖与DB2连接的默认数据库连接:
class X extends ActiveRecord {
public static function getDb() {
return Yii::$app->get('db2'); // second database
}
public $ids;
/**
* @inheritdoc
*/
public static function tableName() {
return 'dbName';
}
/**
* @inheritdoc
*/
public function rules() {
return [
// Rules as per your Database
];
}
/**
* @inheritdoc
*/
public function attributeLabels() {
return [
'id' => 'ID',
];
}
}
请注意,我用的X模型此连接。
OP想要使用一个具有2个不同连接的目录应用程序,而不依赖于'ActiveRecord'类中的重载函数。 – Yupik
你有两个分离的应用程序目录?一个在/服务器/应用程序和一个在/服务器/应用程序测试? – scaisEdge
@scaisEdge不,我想使用相同的代码库(相同的文件夹)但不同的条目脚本,条目脚本只会加载不同的数据库连接。 – TechMafioso
http://www.yiiframework.com/doc-2.0/guide-concept-configurations.html或https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/structure-environments .MD。你有几个选项 - 1.定义环境相关变量'YII_ENV',2.加载配置特定文件。 – lubosdz