Yii2:相同代码库上的多个环境设置

时间:2017-10-08 05:30:18

标签: yii2 environment-variables yii2-advanced-app

我正在尝试在相同的服务器上运行相同的代码库,但是不同的环境设置,我想要实现的非常简单: 如果用户转到:https://server/app:这会加载生产环境 如果用户访问:https://server/app-test:这会加载开发环境,我唯一需要加载的就是数据库连接。

有没有可行的方法呢?

由于

1 个答案:

答案 0 :(得分:-1)

您似乎有两个不同的目录,如果是这样,请在两个应用程序上使用两个不同的连接。

或者

我认为您正在尝试实现以下目标:

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

  1. 创建数据库连接,比如配置目录中的db.php

     <?php
    return [
       'class' => 'yii\db\Connection',
       'dsn' => 'mysql:host=localhost;dbname=dbname',
       'username' => 'user',
       'password' => 'password',
       'charset' => 'utf8',
    ];
    ?>
    
  2. 在您的web.php文件中,在组件部分下调用文件db2.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',
        ];
    }
    }
    
  4. 请注意,我在X模型中使用了此连接。