0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails7 とLaravel10】マイグレーションファイル・生成コマンド等 比較

Posted at

前提

両者、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に軍配があがる?ように感じます

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?