記載されている内容は2019年04月09日時点のものです。現在の情報と異なる可能性がありますので、ご了承ください。記事に記載されている情報は自己責任でご活用いただき、本記事の内容に関する事項については、専門家等に相談するようにしてください。Laravelのマイグレーション機能では、テーブルへのカラム作成や変更なども簡単に行えます。更新や削除など機能に応じた前準備が必要となることもあります。Laravelのマイグレーション機能の使い方を覚え、テーブル操作を行ってみましょう。...マイグレーションとは、プログラムやデータ、OSなどの環境やプラットフォームなどを移行し、移行先に合わせた形式に変換すること意味するIT用語です。移行作業を行う対象によって、「Windowsマイグレーション」「データベースマイグレーション」など呼ばれるマイグレーションの種類があります。語源となる英語のマイグレーション(migration)には、「移動」や「移住」といった意味があります。LaravelのマイグレーションとはLaravelでは、マイグレーションにより、データベースのテーブル作成や編集などを管理することができます。管理するにあたって、Laravelでは、「マイグレーションファイルの作成」と「マイグレーション実行」が必要になります。マイグレーションファイルは、作成するテーブルの設計書にあたります。どのようなデータ型のデータを保存するテーブルかといった定義を行うことになります。on...Laravelでマイグレーションの機能を使って行えるテーブル操作について、順を追ってご紹介します。Laravelのマイグレーションは、データベーステーブルの管理が主目的であると認識しておきましょう。テーブルに関する操作は、基本的にマイグレーションの機能を使って行えます。マイグレーションファイルの新規生成Laravelのマイグレーションでテーブルを作成する際は、artisanコマンドを使って、マイグレーションファイルを新規作成します。create_xxxx_tablecreate_xxxx_tableのxxxxに作成するテーブル名を記述します。記述した名称のテーブルを作成するマイグレーションファイルが生成されます。テーブルの作成Laravelのマイグレーション機能を使ったテーブル作成は、次の3ステップで行えます。1マイグレーションファイルの作成2マイグレーションファイルの編集3マイグレーションの実行この手順は、実はテーブル作成だけでなく、テーブル定義の更新など「マイグレーション」全体としての手順となります。1で作成されたマイグレーションファイルに2で必要事項を記載し、3でデータベースに適用します。方法Laravelで新しいテーブルを作成するには、マイグレーションファイルのupメソッドの中に、Schemaファサードのcreateメソッドを記述します。createメソッドの1つ目の引数にはテーブル名を記述する必要があります。{});マイグレーションファイルの編集マイグレーションファイルを作成すると、マイグレーションに必要な雛形コードが生成されます。テーブル作成の場合は、自動生成された記述の中にある「up」メソッドに、テーブル作成に必要な情報を記述します。以下のサンプル記述は、「name」カラムを持つ簡単なテーブルを作成するイメージです。自動生成されたコードは、upメソッドとしての枠組みだけです。処理コードはすべてテーブル作成用に追記しています。{$table->increments('id');$table->string('name');$table->timestamps();});}マイグレーション実行Laravelで作成したいテーブルの設計を反映させたマイグレーションファイルは、以下のコマンドでデータベースに反映させます。migrateマイグレーションの初回ではなく、新たなマイグレーションファイルを追加した場合は、以下のように、一旦リフレッシュしてから反映させることになります。migrate:refreshテーブルのリネームと削除Laravelでテーブル名の変更を行いたい場合も、マイグレーションの機能を使って簡単に行うことができます。Laravelでデータベースから不要となったテーブルを削除する場合も、マイグレーションの機能を使って簡単に実行できます。ここでは、具体的にLaravelで利用するテーブルリネームの方法とテーブル削除の方法を見ていきましょう。テーブルリネームの方法Laravelで既存のテーブル名前を別の名称に変えたい場合は、renameメソッドを記述します。新規テーブルを作成する場合と同じように、マイグレーションファイルのupメソッドの中に記述します。変更後テーブル名);テーブルリネームの注意事項Laravelでテーブルのリネームを行う際は、リネームしようとしているテーブルを外部キーで参照しているテーブルが存在しないかチェックしておく必要があります。外部キーで参照しているテーブルがあるにも関わらずリネームしてしまうと、外部キーは存在しないテーブルを参照してしまうことになります。テーブル削除の方法Laravelで既存のテーブルを削除する場合に、マイグレーションで使えるメソッドは2つあります。dropかdropIfExistsを使ってテーブルの削除を行います。テーブルの削除は、テーブル作成やリネームと異なり、マイグレーションファイルのdownメソッドの中に記述します。既存のテーブルを削除する場合も、当該テーブルを外部キーで参照しているテーブルがないか、確認したうえで実行する必要があります。したテーブルを考慮しないでテーブルを削除してしまうと、存在しないテーブルを参照するキーを持つテーブルが残ってしまいます。データベース接続とテーブル操作デフォルト接続のデータベースに対し、操作を行う場合は、マイグレーションファイルにいきなり、createやrenameといったメソッドを記述することができます。デフォルト接続以外のデータベース接続で、テーブルの作成や削除といったスキーマ操作を行う場合は、connectionメソッドを使ってから、テーブル操作メソッドを記述していく必要があります。connectionメソッドを使うconnectionメソッドは、引数にデフォルト接続ではない、接続しなおす接続名を記述します。次の動作としてcreateやrenameといったメソッドを記述します。{$table->increments('id');});カラム作成Laravelでテーブルにカラムを作成する場合は、テーブル作成時にcreateメソッドの中で定義を記述する方法と、あとから既存のテーブルにカラムを追加する方法があります。あとから既存のテーブルにカラムを追加する場合は、Schemaファサードのtableメソッドを使います。tableメソッドの使い方は、createメソッドと同じで、最初の引数にテーブル名を指定します。Schemaファサードのtableメソッドを使う例えば、userテーブルに新たに住所(address)というカラムを追加する場合を見てみましょう。{$table->string('address');});カラム作成時に指定できる主なカラムタイプLaravelでテーブルにカラムを作成・追加する際は、カラムタイプを指定します。カラム追加の基本構文と、指定できる主なカラムタイプをご紹介します。100)オプションの文字長を指定したVARCHARデータのカラムmultiLineString(カラム名)multilinestring型データのカラムtext(カラム名)TEXTデータのカラムカラム修飾子Laravelではカラムを追加するときに、カラムタイプの指定に追加して「カラム修飾子」と呼ばれる設定も可能です。プログラムから「必須項目ではない」という前提で参照するカラムは「NULL値設定可能(nullable)」のカラムにすることで、値を設定しなくても可能なカラムになります。nullableメソッドを使うNULL値設定可能なカラムとして追加する際は、マイグレーションファイルには以下の例のようにコードを記述します。{$table->string('hobby')->nullable();});defaultメソッドを使うカラムに値が必須な場合でも、何も設定されなかった場合にエラーとせず、既定値を設定することも可能です。カラム作成・追加のときに「default」メソッドで既定値を指定します。{$table->string('hobby')->default('StampCollecting');});autoIncrementメソッドを使う整数カラムを自動増分ID(主キー)へ設定したい場合、カラム修飾子の「autoIncrement」メソッドを修飾子として使うことができます。{$table->unsignedInteger('memberId')->autoIncrement();});カラム変更Laravelでは、マイグレーションの機能を使って、既存のカラムを変更することもできます。カラムを変更する前に、composer.jsonファイルで、doctrine/dbalを追加しておく必要があります。DBALライブラリーは、現在のカラムの状態を決め、マイグレーションで指定されたカラムに対し、修正を行うSQLクエリを生成する際に必要となります。composer.jsonファイルでdoctrine/dbalを追加するカラムを変更する場合は、まず、Laravelルートディレクトリへ移動して以下のコードを実行しておきましょう。doctrine/dbalカラムの属性変更カラムの属性変更をする場合は、changeメソッドを使います。カラムの桁数変更では、記述例のように記述します。現在何桁かは指定不要です。変更後の桁数(例では75)のみ指定し、changeメソッドを記述します。75)->change();});カラム名変更カラム名を変更するには、renameColumnメソッドを使います。メソッドの引数として、変更前のカラム名と変更後のカラム名を指定します。'username');});カラム削除カラムを削除したいときは、dropColumnメソッドを使います。カラム削除の場合も、削除実行の前にcomposer.jsonファイルへdoctrine/dbal依存パッケージを追加する必要があります。updateを実行します。dropColumnメソッドを使うカラム削除には、dropColumnメソッドを使います。引数に配列を使えるので、複数のカラムを一度に削除指定できます。'ip');});1カラムのみ削除する場合は、「dropColumn('ip')」のように指定します。インデックス作成Laravelのマイグレーション機能を使って、カラムにインデックスを作成できます。カラムを定義する際にインデックスを付けることも、一旦カラムを定義した後に、インデックスを追加することも可能です。・index(カラム名):基本的なインデックスuniqueメソッドをチェーンで付け加えるカラム定義時に、インデックス設定としてuniqueキーとなるよう設定がすることもできます。この場合はチェーンで付け加えます。【コード記述例】$table->string('device')->unique();ほかのインデックス追加メソッドも同様に、チェーンで付け加えることができます。develo...Laravelでは、マイグレーション機能を使うことで、テーブルの作成自体も、作成後に発生する「調整」ともいえるテーブルやカラムの変更・削除といった操作も、簡単に行えます。テーブルのスキーマ操作は、DBAとしての技術がなくても可能ですが、既存テーブルの操作は、慎重に行う必要があります。テーブルやカラムの更新・削除にまつわる注意事項をよく確認し、Laravelのマイグレーション機能を使ってみましょう。file.2:営業マンとして活躍し、海外留学。file.4:独学よりもスクールで。他人と同じことはしない。