2017-10-08 46 views
0

我试图在同一台服务器上运行相同的代码库,但环境设置不同,我试图实现的操作非常简单: 如果用户转到:https://server/app:This加载生产环境 如果用户转到:https://server/app-test:此加载开发环境,我将需要加载不同的唯一东西是数据库连接。Yii2:在相同的代码基础上设置多个环境

是否有任何可能的方式做到这一点?

感谢

+0

你有两个分离的应用程序目录?一个在/服务器/应用程序和一个在/服务器/应用程序测试? – scaisEdge

+0

@scaisEdge不,我想使用相同的代码库(相同的文件夹)但不同的条目脚本,条目脚本只会加载不同的数据库连接。 – TechMafioso

+1

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

回答

-1

看来你有两个不同的目录,如果是这样的话,使用上都应用了两种不同的连接。

或者

我认为你正在努力实现以下几点:

一个应用程序,不同的数据库连接。如果这是正确的,继续执行以下步骤:

  1. 创建数据库连接,说db.php中在你的config目录

    <?php 
    return [ 
        'class' => 'yii\db\Connection', 
        'dsn' => 'mysql:host=localhost;dbname=dbname', 
        'username' => 'user', 
        'password' => 'password', 
        'charset' => 'utf8', 
    ]; 
    ?> 
    
  2. 调用文件db2.php在web.php文件,在组件部分:不管你想要去使用这个数据库连接

    'db2' => require(__DIR__ . '/db2.php'), 
    
  3. ,覆盖与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模型此连接。

+0

OP想要使用一个具有2个不同连接的目录应用程序,而不依赖于'ActiveRecord'类中的重载函数。 – Yupik

相关问题