私は同じサーバー上で同じ環境でコードベースを実行しようとしていますが、達成しようとしているものは非常に簡単です: ユーザが:https://server/app:これプロダクション環境をロードします ユーザが:https://server/app-test:これは開発環境をロードしますが、ロードする必要があるのはデータベース接続のみです。Yii2:同じコードベースの複数の環境設定
可能な方法はありますか?
おかげ
私は同じサーバー上で同じ環境でコードベースを実行しようとしていますが、達成しようとしているものは非常に簡単です: ユーザが:https://server/app:これプロダクション環境をロードします ユーザが:https://server/app-test:これは開発環境をロードしますが、ロードする必要があるのはデータベース接続のみです。Yii2:同じコードベースの複数の環境設定
可能な方法はありますか?
おかげ
そうである場合は、両方のアプリケーションに2つの異なる接続を使用して、二つの異なるディレクトリを持っているようです。
それとも
私はあなたが以下を達成しようとしていると思う:
一つのアプリケーションと異なるデータベース接続を。これが正しければ、次のステップに進みます。
はあなたのweb.phpでファイルdb2.phpを呼び出し
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=dbname',
'username' => 'user',
'password' => 'password',
'charset' => 'utf8',
];
?>
あなたのconfigディレクトリにをdb.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つの異なる接続を持つ1つのディレクトリアプリケーションを使用する必要があります。これは 'ActiveRecord'クラスの関数のオーバーライドに依存しません。 – Yupik
あなたは2つの別々のアプリディレクトリを持っていますか? 1つは/ server/appに、もう1つは/ server/app-testにありますか? – 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