最近Yii2を触っているので遊びながらやったことをメモ。
Yii2でサイト構築する際にまず行うこと・・・
DBのテーブル作成を行う人が多いと思います。
SQLをバージョン管理してもいいんですが、
折角なのでDB Migrationを使ってコンソールからコマンド叩いてテーブルを構築します。
※DBは作成済みでyiiコマンドを実行出来る状況になっていることが前提
yii migrate/create create_tablename_table
上記コマンドを実行すると
m150620_123401_create_tablename_table.phpというファイルが
@app/migrations以下に作成されます。
ファイル名は作成日時を使って
m<YYMMDD_HHMMSS>_<Name>.php
となってます。
このファイルを開いてみると
<?php
use yii\db\Schema;
use yii\db\Migration;
class m150620_123401_create_tablename_table extends Migration
{
public function up()
{
}
public function down()
{
echo "m150620_123401_create_tablename_table cannot be reverted.\n";
return false;
}
}
このファイルを修正していきます。
<?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,
]);
}
public function down()
{
$this->dropTable('tablename');
}
}
これだけです。
up()がテーブル作成時に使用されるfunction
down()がテーブル削除時に使用されるfunctionになっています。
テーブルを作成するにはコンソールから
yii migrate/to m150620_123401_create_tablename_table
これでtablenameっていうテーブルが作成されます。
カラムはidがプライマルキー、titleがSTRINGでNOT NULL、contentがtextになっています。
テーブルを削除するにはコンソールから
yii migrate/down
このコマンドで最も最近作成されたテーブルが削除されます。
ちなみにこのコマンド実行するとどのテーブルを削除するか確認する画面が出てくるので、
削除対象のテーブルを確認してから削除を実行出来ます。