前提
両者、postsテーブルを作成する想定で、title(string)カラムを持ちます。
rails マイグレーションファイル生成コマンド
基本形になります
rails generate migration CreateTableName
postsテーブルを作成する場合
rails generate migration CreatePosts
Postモデルと同時にマイグレーションファイルを作成する場合(Laravelと異なり特別なことをせず、モデルを作ると自動でマイグレーションファイルも作成される)
rails generate model Post
以下のようにカラムを指定し、作成することも可能
rails generate model Post title:string
rails ロールバック(最後に実行されたマイグレーションを取り消す)コマンド
rails db:rollback
rails データベースをすべてリセットし、マイグレーションを再実行するコマンド(個人開発だと使いがちなコマンド)
rails db:drop db:create db:migrate
rails マイグレーションファイル
laravelよりとにかくシンプルです。
xxxxx_create_posts.rb
class CreatePosts < ActiveRecord::Migration[7.0]
def change
create_table :posts do |t|
# ここにカラムを追加していく
t.string :title
t.timestamps
end
end
end
laravel マイグレーションファイル生成コマンド
基本形になります
php artisan make:migration create_table_name_table
postsテーブルを作成する場合
php artisan make:migration create_posts_table
Postモデルと同時にマイグレーションファイルを作成する場合
php artisan make:model Post --migration
laravel ロールバック(最後に実行されたマイグレーションを取り消す)コマンド
php artisan migrate:rollback
laravel データベースを全て削除し、マイグレーションを再実行するコマンド(個人開発だと使いがちなコマンド)
php artisan migrate:fresh
Laravel マイグレーションファイル
railsと比較すると文量が多いですが、実際の記述量はほぼ変わらないです。ロールバック時のメソッドが記述されています。(downメソッド)
xxxxx_create_table_posts.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
//ここにカラムを追加していく
$table->string('title')
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
}
コマンド自体は両者にそこまで差は無さそうです。
ただ「シンプルかつ高機能」という観点で見るとrailsに軍配があがる?ように感じます