docs/guide-ja updated [skip ci] (#13342)

* docs/guide-ja/caching-data.md updated

* docs/guide-ja/caching-fragment.md updated

* docs/guide-ja/concept-configurations.md updated

* WIP

* docs/guide-ja/concept-di-container.md updated

* docs/guide-ja/db-active-record.md updating WIP

* docs/guide-ja/db-active-record.md updated

* docs/guide-ja updating (WIP) [skip ci]
This commit is contained in:
Nobuo Kihara
2017-01-08 02:05:18 +09:00
committed by Alexander Makarov
parent b113ad460a
commit 92270bcd24
5 changed files with 100 additions and 9 deletions

View File

@ -409,6 +409,11 @@ class m160328_040430_create_post_table extends Migration
上記の例で `author_id:integer:notNull:foreignKey(user)` は、`user` テーブルへの外部キーを持つ `author_id` という名前のカラムを生成します。
一方、`category_id:integer:defaultValue(1):foreignKey` は、`category` テーブルへの外部キーを持つ `category_id` というカラムを生成します。
2.0.11 以降では、`foreignKey` キーワードは空白で区切られた第二のパラメータを取ることが出来ます。
これは、生成される外部キーに関連づけられるカラム名を表します。
第二のパラメータが渡されなかった場合は、カラム名はテーブルスキーマから取得されます。
スキーマが存在しない場合や、プライマリキーが設定されていなかったり、複合キーであったりする場合は、デフォルト名として `id` が使用されます。
### テーブルを削除する
@ -590,6 +595,9 @@ class m160328_041642_create_junction_table_for_post_and_tag_tables extends Migra
}
```
2.0.11 以降では、中間テーブルの外部キーのカラム名はテーブルスキーマから取得されます。
スキーマでテーブルが定義されていない場合や、プライマリキーが設定されていなかったり複合キーであったりする場合は、デフォルト名 `id` が使われます。
### トランザクションを使うマイグレーション <span id="transactional-migrations"></span>
@ -861,6 +869,66 @@ return [
もう、`migrationTable` のコマンドラインオプションを使ってテーブルを指定する必要はなくなります。
### 分離されたマイグレーション <span id="separated-migrations"></span>
時として、異なる名前空間からマイグレーションを使用する必要が生じることがあります。
それはあなた自身のプロジェクトの何らかのエクステンションであったりモジュールであったりします。
そのようなものの一つの例は [RBAC コンポーネント](security-authorization.md#configuring-rbac) のためのマイグレーションです。
バージョン 2.0.10 以降では、[[yii\console\controllers\MigrateController::migrationNamespaces|migrationNamespaces]]
を使ってこの課題を解決することが出来ます。
```php
return [
'controllerMap' => [
'migrate' => [
'class' => 'yii\console\controllers\MigrateController',
'migrationNamespaces' => [
'app\migrations', // アプリケーション全体のための共通のマイグレーション
'module\migrations', // 特定のモジュールのためのマイグレーション
               'yii\rbac\migrations', // 特定のエクステンションのためのマイグレーション
],
],
],
];
```
これらをお互いに完全に分離して適用かつ追跡したい場合は、別々の名前空間とマイグレーション履歴テーブルを使う
複数のマイグレーションコマンドを構成することが出来ます。
```php
return [
'controllerMap' => [
// アプリケーション全体のための共通のマイグレーション
'migrate-app' => [
'class' => 'yii\console\controllers\MigrateController',
'migrationNamespaces' => ['app\migrations'],
'migrationTable' => 'migration_app',
],
// 特定のモジュールのためのマイグレーション
'migrate-module' => [
'class' => 'yii\console\controllers\MigrateController',
'migrationNamespaces' => ['module\migrations'],
'migrationTable' => 'migration_module',
],
// 特定のエクステンションのためのマイグレーション
'migrate-rbac' => [
'class' => 'yii\console\controllers\MigrateController',
           'migrationNamespaces' => ['yii\rbac\migrations'],
'migrationTable' => 'migration_rbac',
],
],
];
```
データベースを同期するためには、一つではなく複数のコマンドを実行しなければならなくなることに注意してください。
```
yii migrate-app
yii migrate-module
yii migrate-rbac
```
## 複数のデータベースにマイグレーションを適用する <span id="migrating-multiple-databases"></span>
デフォルトでは、マイグレーションは `db` [アプリケーションコンポーネント](structure-application-components.md) によって指定された同じデータベースに対して適用されます。