データベーステーブルのカラム追加、変更、削除、属性変更方法【初心者のためのLaravel超入門講座】

Laravel 入門講座
スポンサーリンク

Laravelでデータベースのカラムの更新・追加・削除や属性変更をする場合、MySQL上で直接行ってしまうとLaravel上での処理と食い違いが生じてしまいます。

面倒ですがマイグレーションファイルを作り、Laravel上でファイルを設定をして、マイグレートを実行していきましょう。

流れとしては、次の3ステップです。

  1. コマンド入力
  2. マイグレーションファイルに入力
  3. マイグレート実行

それぞれの処理を解説していきますね。

なおLaravelについて他にも知りたい場合は、こちらのLaravel講座ページをご覧ください。

スポンサーリンク

カラム属性や名前の変更前に行っておくこと

カラム名や属性変更を行うには、最初に DBALドライバーをインストールしましょう。

次のようにコマンドをいれます。

インストールが完了すると、次の画面が表示されます。

このドライバーをインストールせずに処理を進めると、下記のようなエラーがでます。

Class ‘Doctrine\DBAL\Driver\PDOMySql\Driver’ not found

カラムの追加

①【カラム名】に追加したいカラム名を、【テーブル名】にカラムを追加するテーブルの名前を入れます。

Created Migration と出たら成功。

database/migrationsにマイグレーションファイルができています。

②マイグレーションファイルの public function up() に追加するカラムの情報を入力します。

このときpublic function down()にも同じデータをいれておきましょう。

ここにデータがないと、削除するときにキレイに削除できません。

このとき、もしカラムを配置する場所に指定があれば、 次のようにします。

上記のようにすると、id カラムのすぐ後ろに新しいカラムができます。

③最後にマイグレートを実行して完了です。

カラム名の変更

①カラム名を変更するためのコマンドを入力します。

今回は addressesテーブル上のplayer_idをworker_idに変更します。

実行するとdatabase/migrationsにマイグレーションファイルができます。

②マイグレーションファイルのpublic fucntion up() に、リネーム情報を書き加えます。

public function down()には、削除するときの処理を書き加えます。

ファイルはこのようになります。

③コマンドでマイグレートを実行して完了

カラムの削除

①カラムを削除したいときは、drop_columnを使います。

emailsテーブル上のaddressカラムを削除したい場合、次のようにコマンドを打ちます。

Created Migration と出たら成功。

②database/migrationsからマイグレーションファイルを開きます。

実行するとdatabase/migrationsにマイグレーションファイルができます。

マイグレーションファイルのpublic fucntion up() に、削除するカラムの情報を書き加えます。

public function down()には、反対の処理を書き加えます。

今回の場合には削除を取り消す処理になるので、カラムを作成するときの情報を入力します。

ちょっとややこしいですね。

ファイルはこのようになります。

③マイグレートを実行して完了

カラム属性の変更(nullableにする)

属性の変更方法も紹介しますね。

①カラムの属性を変更する場合は、changeを使います。

usersテーブル上のstripe_idカラムをnullable(null値OK)にしたい場合、次のようにコマンドを打ちます。

Created Migration と出たら成功。

②database/migrationsからマイグレーションファイルを開きます。

実行するとdatabase/migrationsにマイグレーションファイルができます。

マイグレーションファイルのpublic fucntion up() に、属性変更の情報を書き加えます。

public function down()には、変更取り消しの処理を書き加えます。

ファイルはこのようになります。

③マイグレートを実行して完了

データ型の変更

別の記事にまとめてあるので、こちらをご覧ください。

さいごに

なおマイグレーションファイルを作成する際のカラム名については、好きな形で書いて大丈夫です。

下記の赤色のような部分です。

php artisan make:migration delete_address_from_emails_table –table=emails
じゅんこ
じゅんこ

私は最初決まった書き方で書かなきゃいけないって思っていました!

大事なのはマイグレーションファイルの中のテーブル名と、変更を加えるカラムについての部分です。

なおマイグレーションの処理でトラブルがあった場合は、とりあえず、ロールバックをして1回処理を戻してみるのが基本です。

ロールバックの方法はこちらの記事で詳しく解説しています。

なおロールバックで取消処理を行うと、そのテーブルに保存したデータも消えるので、ご注意を!

コメント

タイトルとURLをコピーしました