ここにあるコマンドたちで適当にmigrationファイルをいじる。
reviewsテーブルの作成。
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateReviewsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('reviews', function (Blueprint $table) { $table->increments('id'); $table->string('hosting_type')->default('github'); $table->string('repository_url'); $table->unsignedMediumInteger('number'); $table->string('title'); $table->unsignedInteger('author_id'); $table->unsignedTinyInteger('status')->default(0); $table->timestamps(); $table->unique(['hosting_type', 'repository_url', 'number']); // $table->foreign('author_id')->references('id')->on('users'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('reviews'); } }
commentsテーブルの作成。
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateCommentsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('comments', function (Blueprint $table) { $table->increments('id'); $table->string('comment_type'); $table->unsignedInteger('review_id'); $table->unsignedInteger('commented_user_id'); $table->string('file_name'); $table->unsignedInteger('line'); $table->text('content'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('comments'); } }
usersテーブルも作成したいが、すでにファイルがあったので差分を書くと以下。
Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); - $table->string('email')->unique(); - $table->string('password'); - $table->rememberToken(); + $table->string('email'); + $table->string('url'); + // $table->string('password'); + // $table->rememberToken(); $table->timestamps(); }); }
上記ファイルを作った上で、migrationを実行すると
$ php artisan migrate Migrated: 2016_12_18_134444_create_reviews_table Migrated: 2016_12_18_134451_create_comments_table
む、usersテーブルもすでにあったか?
MariaDB [kamattechan]> show create table reviews\G *************************** 1. row *************************** Table: reviews Create Table: CREATE TABLE `reviews` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `hosting_type` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'github', `repository_url` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `number` mediumint(8) unsigned NOT NULL, `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `author_id` int(10) unsigned NOT NULL, `status` tinyint(3) unsigned NOT NULL DEFAULT '0', `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `reviews_hosting_type_repository_url_number_unique` (`hosting_type`,`repository_url`,`number`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 1 row in set (0.00 sec) MariaDB [kamattechan]> show create table comments\G *************************** 1. row *************************** Table: comments Create Table: CREATE TABLE `comments` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `comment_type` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `review_id` int(10) unsigned NOT NULL, `commented_user_id` int(10) unsigned NOT NULL, `file_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `line` int(10) unsigned NOT NULL, `content` text COLLATE utf8_unicode_ci NOT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 1 row in set (0.00 sec) MariaDB [kamattechan]> show create table users\G *************************** 1. row *************************** Table: users Create Table: CREATE TABLE `users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `url` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 1 row in set (0.00 sec)
おお password
カラムなくなってるし、とりあえずこれで良さそう。
ちなみに全テーブルをもう一回作り直すとか男前なことをしたい場合は以下のやり方でいける。
$ php artisan migrate:refresh --seed Rolled back: 2016_12_18_134451_create_comments_table Rolled back: 2016_12_18_134444_create_reviews_table Rolled back: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table Migrated: 2016_12_18_134444_create_reviews_table Migrated: 2016_12_18_134451_create_comments_table
Eloquentまだいけないな…。今日はここまで。