2022年09月08日
前回の記事でマイグレーションファイルを作成して内容を編集してテーブルを作成するところまでやりました。今回はその内容を変更する方法、取り消す方法を勉強していきます。
スポンサーリンクテーブルの内容を変更する(名前を変更、データ型を変更、文字数を変更)ためには変更用のマイグレーションファイルを作成します。
テーブル作成時と同様に、
php artisan make:migration update_plando_table --table=plando
plandoテーブルを編集するという名前をつけたマイグレーションファイルを作成します。--table=plando
のように表記することで、どのテーブルを変更するかの構文が最初から入ったファイルを作成することができます。
基本的にテーブルを作った時と同じコマンドなので同じようにupとdownがあるマイグレーションファイルができます。このupのほうを変更していきます。
public function up()
{
Schema::table('plando', function (Blueprint $table) {
//
});
}
作成した段階ではこうなっているのでコメントアウトしている部分を修正します。
$table->renameColumn('task_name', 'client_name'); //カラム名を変更
$table->integer('length')->nullable(); //整数型のカラム「length」を追加
これを実行します。
失敗してますね…。原因を見ると、Changing columns for table "plando" requires Doctrine DBAL. Please install the doctrine/dbal package.
何かのパッケージをインストールしないといけないみたいですね。なぜ最初からいてくれないのか。
プロジェクトディレクトリ内で、composerのコマンドを入れてインストールします。これも探したサイトによっていろいろな表記のしかたがあって正解がよくわからないが、今の環境は下記のコマンドでインストールできました。
composer require doctrine/dbal
できてるのでしょうか。再度マイグレーションを実行してみます。
諸々おかしなところありましたが成功しました。
テーブルの内容をマイグレーションを実行する前の状態に戻すことを「ロールバック」といい、コマンドで戻すことができます。マイグレーションファイルを順番にたどって戻ってくれるわけですね。
自分でSQL打ったり、前のテーブルの状況を一生懸命調べなくてよくてほんと便利ですね。
php artisan migrate:rollback
前回実行したマイグレーションを取り消すコマンドです。前回の変更はテーブル名の変更がひとつと、lengthというフィールドを追加していました。
実行しても全然変わりません…何かおかしい。別のロールバックの方法を試してみます。
php artisan migrate:rollback --step=1
stepの数字の分ロールバックします。
テーブルがすべてなくなってしまった…(笑)これはまた復習する必要がありそうですね。
さらに調べてみるとマイグレーションでのテーブル削除は、テーブル削除のマイグレーションファイルを作成する必要があるみたいで、その辺の工数が少ないからおかしかったのか?という感じですね…
次回は次の段階に進めるといいのですがもしかしたら進めないかも。
お仕事のご依頼やご相談、弊社サービス内容に関してなど、お気軽にご相談ください。