Laravel Migration/Seed
目次
Migrationとは
php artisan migrateコマンドによって実行されるバッチ処理
マイグレーションファイルに書かれた命令が実行される。
migrateの結果、migrationsテーブルに実行したファイル名が登録される。
登録されたファイル名は再度migrateを実行しても実行されない。
コマンド
マイグレーション
機能 | コマンド | 備考 |
---|---|---|
マイグレーションファイル作成 | php artisan make:migration XXXXX --table=tests |
|
マイグレーション実行 | php artisan migrate | 全マイグレーションファイルのupメソッドが実行される |
マイグレーションファイル指定 |
|
|
migrationsテーブル内容確認 | php artisan migrate:status | |
全ロールバック(down) | php artisan migrate:reset | 全マイグレーションファイルのdownメソッドが実行される |
ファイル指定ロールバック |
|
|
全ロールバック &マイグレーション |
php artisan migrate:refresh | =reset、migrate |
全テーブル削除 &マイグレーション |
php artisan migrate:fresh | downメソッドは実行されずにテーブルがdropされる |
全ロールバック &マイグレーション &シード |
php artisan migrate:refresh --seed |
シード
機能 | コマンド | 備考 |
---|---|---|
シーディングファイル作成 | php artisan make:seeder XXXXXTableSeeder | |
シーディング実行 | php artisan db:seed | 実行前にcomposer dump-autoload が必要 |
シーディング実行(ファイル指定) | php artisan db:seed --class=XXXXXTableSeeder |
|
ロールバック&マイグレーション&シード | 「マイグレーション」コマンド参照 |
マイグレーション
create
class Create〜Table extends Migration
{
public function up()
{
Schema::create('物理テーブル名', function (Blueprint $table) {
$table->increments('id'); ※カラム名をidにすると自動で主キーになる?
$table->unsignedInteger('id', false); ※auto incrementさせたくない場合
$table->integer('カラム名');
$table->double('カラム名', 8, 5);
$table->unsignedInteger('カラム名');
$table->string('カラム名', 256);
$table->string('カラム名');
$table->text('カラム名');
$table->timestamp('カラム名');
$table->enum('カラム名', [
'student',
'teacher',
]);
$table->timestamps();
データ型の後に付けたし
$table->データ型()
->default(0.0)
->nullable()
->comment('コメント')
->after('列名')
->before('列名');
});
}
}
drop
class Create〜Table extends Migration
{
public function down()
{
Schema::dropIfExists('物理テーブル名');
}
}
add/delete
class Create〜Table extends Migration
{
public function up()
{
Schema::table('物理テーブル名', function (Blueprint $table) {
列追加
$table->integer('カラム名');
列削除
$table->dropColumn('カラム名');
});
}
alter(型変更)
変更用ライブラリが必要
composer require doctrine/dbal
$table->integer(‘カラム名’)->change();
alter(名前変更)
変更用ライブラリが必要
composer require doctrine/dbal
$table->renameColumn(‘変更前’, ‘変更後’);
主キー
$table->primary(['カラム名', 'カラム名']);
外部キー制約
$table->foreign('自カラム名')
->references('外部カラム名')
->on('外部テーブル名')
->onUpdate('RESTRICT')
->onDelete('CASCADE');
$table->dropForeign('制約名');
index
$table->index(['カラム1', 'カラム2']);
名前が長いエラーが出る場合
〜->name('〜')
$table->dropIndex(['カラム1', 'カラム2']);
unique
$table->unique(['カラム1', 'カラム2']);
名前が長いエラーが出る場合
〜->name('〜')
$table->dropUnique(['カラム1', 'カラム2']);
シード
class 〜Seed extends Seeder
{
public function run()
{
foreach ([1, 3, 5] as $i) {
モデルクラス::create([
'〜_id' => $i,
'列名' => '〜',
'列名' => '〜',
]);
}
}
}