Yii2のDB Migrationのその2。
今回はindexの貼り方、外部キー制約の設定、データ投入を行う。
前回の記事で作成した
m150620_123401_create_tablename_table.phpというファイルを触っていきます。
<?php
use yii\db\Schema;
use yii\db\Migration;
class m150620_123401_create_tablename_table extends Migration
{
public function up()
{
$this->createTable('tablename', [
'id' => Schema::TYPE_PK,
'title' => Schema::TYPE_STRING . ' NOT NULL',
'content' => Schema::TYPE_TEXT,
'sub_table_id' => Schema::TYPE_INTEGER,
]);
}
public function down()
{
$this->dropTable('tablename');
}
}
現在は上記のようにテーブルの作成と削除だけが設定されています。
まずは外部キー制約の設定を行います。
外部キー制約で使うカラムsub_table_idを追加しています。
今回の例ではsub_tableのidを対象に設定します。
$this->addForeignKey('fkey_tablename_sub_table_id', 'tablename', 'sub_table_id', 'sub_table','id');
外部制約キーの名前(任意)、自身のテーブル名、自身のカラム、制約対象テーブル名、制約対象カラムの順に記載します。
この一文をcreateTableの下に追記します。
<?php
use yii\db\Schema;
use yii\db\Migration;
class m150620_123401_create_tablename_table extends Migration
{
public function up()
{
$this->createTable('tablename', [
'id' => Schema::TYPE_PK,
'title' => Schema::TYPE_STRING . ' NOT NULL',
'content' => Schema::TYPE_TEXT,
'sub_table_id' => Schema::TYPE_INTEGER,
]);
$this->addForeignKey('fkey_tablename_sub_table_id', 'sub_table', 'sub_table_id', 'sub_table','id');
}
public function down()
{
$this->dropTable('tablename');
}
}
次にtitleにindexを貼ってみましょう。
$this->createIndex('tablename_title_index', 'tablename', 'title');
indexの名前(任意)、テーブル名、対象のカラムの順に記載します。
この一文をcreateTableの下に追記します。
<?php
use yii\db\Schema;
use yii\db\Migration;
class m150620_123401_create_tablename_table extends Migration
{
public function up()
{
$this->createTable('tablename', [
'id' => Schema::TYPE_PK,
'title' => Schema::TYPE_STRING . ' NOT NULL',
'content' => Schema::TYPE_TEXT,
'sub_table_id' => Schema::TYPE_INTEGER,
]);
$this->addForeignKey('fkey_tablename_sub_table_id', 'sub_table', 'sub_table_id', 'sub_table','id');
$this->createIndex('tablename_title_index', 'tablename', 'title');
}
public function down()
{
$this->dropTable('tablename');
}
}
これでindexが作成されます。