cake2系にあった、cake schema
コマンドは、cake3系ではなくなったらしいので、色々調べたメモ
- Phinxというマイグレーションツールを使ってる
- Phinx導入ガイド
- なので、cake2までのCakeDC/migrationsと互換性は無い
- Schema自体は、スキーマシステムとして似たような物が用意されてるみたい
cake3からは、Migrationsを使うのがセオリーぽい
Migration関係のコマンド
// migration作成
$ ./bin/cake bake migration [Migration名]
// migration実行
$ ./bin/cake migrations migrate
Migrationファイルの記述と実行
// 作ったMigration
class Test extends AbstractMigration
{
public function change()
{
$table = $this->table('tests');
// テーブル定義
$table->addColumn('title', 'string', [
'default' => null,
'limit' => 255,
]);
$table->addColumn('body', 'text', [
'default' => null,
]);
$table->addColumn('created', 'datetime', [
'default' => null,
'null' => false,
]);
$table->addColumn('modified', 'datetime', [
'default' => null,
]);
$table->create();
// id を unsigned に変更
$table->changeColumn('id', 'integer', [
'identity' => true,
'signed' => false,
]);
}
}
// できたテーブル
| tests | CREATE TABLE `tests` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`body` text NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
Seed関係のコマンド
// seed作成
$ ./bin/cake bake seed [Model名]
// seed実行
$ ./bin/cake migrations seed
Seedファイルの記述と実行
// 作ったSeed
class ArticlesSeed extends AbstractSeed
{
/**
* Run Method.
*
* Write your database seeder using this method.
*
* More information on writing seeds is available here:
* http://docs.phinx.org/en/latest/seeding.html
*
* @return void
*/
public function run()
{
$data = [
['title' => 'タイトル', 'body' => 'これは、記事の本文です', 'created' => date("Y-m-d H:i:s",time()), 'modified' => date("Y-m-d H:i:s",time())],
['title' => 'またタイトル', 'body' => 'そこに本文が続きます', 'created' => date("Y-m-d H:i:s",time()), 'modified' => date("Y-m-d H:i:s",time())],
];
$table = $this->table('articles');
$table->insert($data)->save();
}
}
// 入ったデータ
MySQL [cake3]> select * from articles;
+----+--------------------+-----------------------------------+---------------------+---------------------+
| id | title | body | created | modified |
+----+--------------------+-----------------------------------+---------------------+---------------------+
| 1 | タイトル | これは、記事の本文です | 2017-02-16 16:14:13 | 2017-02-16 16:14:13 |
| 2 | またタイトル | そこに本文が続きます | 2017-02-16 16:14:13 | 2017-02-16 16:14:13 |
+----+--------------------+-----------------------------------+---------------------+---------------------+
2 rows in set (0.00 sec)