menu
書いてる野郎
orebike@gmail.com
.env
の対象に対して Migration(テーブル構築とデータツッコミ)を行う
$ php artisan migrate
pretend
オプションをつけることによって、実行される予定のSQLがどのようなものか確認できる。
$ php artisan migrate --pretend
確認だけなので実際には実行されない。
コマンドから migrate で使う定義ファイルを生成することができる
$ php artisan make:migration hogehoge
実行すると。
database/migrations/2015_06_11_113528_hogehoge.php
のようなタイムスタンプ+指定した名前のようなファイルが生成される。
このファイル名の昇順で migrate 順が決まる。hogehoge の部分は任意なので何か内容を端的に表したものにしたほうが良いだろう
テーブルを作成する定義を作成する場合はオプションをつけて
$ php artisan make:migration hogehoge --create=hoges
このように行うとこのように作成と削除の雛形が埋め込まれた状態で生成される
public function up() { Schema::create('hoges', function (Blueprint $table) { $table->increments('id'); $table->timestamps(); }); } public function down() { Schema::drop('hoges'); }
定義ファイル内容は
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class Hogehoge extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('employee', function(Blueprint $table){ $table->increments('id'); $table->string('name'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('employee'); } }
進める方向を記述する up と up の内容を取り消す down を作成する。
無指定だと基本的に not null 制約がくっつく
Laravel 5.0.16, MySQL 5.5.46
method | MySQL | memo |
---|---|---|
$table->increments('hoge') | `hoge` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY | 自動的にPKに確定 |
$table->bigIncrements('hoge'); | `hoge` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY | 自動的にPKに確定 |
$table->bigInteger('hoge'); | `hoge` BIGINT NOT NULL, | |
$table->binary('hoge') | `hoge` BLOB NOT NULL, | |
$table->boolean('hoge') | `hoge` tinyint(1) NOT NULL, | |
$table->char('hoge') | `hoge` CHAR(255) NOT NULL, | パラメータ無しの場合は255になる |
$table->char('hoge', 5) | `hoge` CHAR(5) NOT NULL, | |
$table->date('hoge') | `hoge` DATE NOT NULL, | |
$table->dateTime('hoge') | `hoge` datetime NOT NULL, | |
$table->decimal('hoge') | `hoge` DECIMAL(8, 2) NOT NULL, | パラメータ無しなら 8,2 指定 |
$table->decimal('hoge', 6, 3) | `hoge` DECIMAL(6, 3) NOT NULL, | |
$table->enum('hoge', ['aaa', 'bbb', 'ccc']) | `hoge` enum('aaa', 'bbb', 'ccc') NOT NULL, | |
$table->float('hoge') | `hoge` DOUBLE(8, 2) NOT NULL, | |
$table->integer('hoge') | `hoge` INT NOT NULL, | |
$table->json('hoge') | `hoge` text NOT NULL, | |
$table->longText('hoge') | `hoge` longtext NOT NULL, | |
$table->mediumInteger('hoge') | `hoge` mediumint NOT NULL, | |
$table->mediumText('hoge') | `hoge` mediumtext NOT NULL, | |
$table->morphs('hoge') | `hoge_id` INT UNSIGNED NOT NULL, | なんだかよくわからないw |
`hoge_type` VARCHAR(255) NOT NULL, | なんだかよくわからないw | |
$table->nullableTimestamps() | `created_at` TIMESTAMP NULL, | カラム名は固定 |
`updated_at` TIMESTAMP NULL, | カラム名は固定 | |
$table->rememberToken() | `remember_token` VARCHAR(100) NULL, | カラム名は固定 |
$table->smallInteger('hoge') | `hoge` SMALLINT NOT NULL, | |
$table->softDeletes() | `deleted_at` TIMESTAMP NULL, | カラム名は固定 |
$table->string('hoge') | 'hoge' VARCHAR(255) NOT NULL, | パラメータ指定無しなら255 |
$table->string('hoge', 100) | 'hoge' VARCHAR(100) NOT NULL, | |
$table->text('hoge') | 'hoge' text NOT NULL, | |
$table->time('hoge') | 'hoge' TIME NOT NULL, | |
$table->tinyInteger('hoge') | 'hoge' tinyint NOT NULL, | |
$table->timestamp('hoge') | 'hoge' TIMESTAMP DEFAULT 0 NOT NULL, | |
$table->timestamps() | `created_at` TIMESTAMP DEFAULT 0 NOT NULL, | カラム名固定 |
`updated_at` TIMESTAMP DEFAULT 0 NOT NULL | カラム名固定 |