Laravelを使ってみよう-6

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.何かのパッケージをインストールしないといけないみたいですね。なぜ最初からいてくれないのか。

スポンサーリンク

Doctrine DBALをインストールする

プロジェクトディレクトリ内で、composerのコマンドを入れてインストールします。これも探したサイトによっていろいろな表記のしかたがあって正解がよくわからないが、今の環境は下記のコマンドでインストールできました。

composer require doctrine/dbal

できてるのでしょうか。再度マイグレーションを実行してみます。

諸々おかしなところありましたが成功しました。

マイグレーションの取り消しをする

テーブルの内容をマイグレーションを実行する前の状態に戻すことを「ロールバック」といい、コマンドで戻すことができます。マイグレーションファイルを順番にたどって戻ってくれるわけですね。

自分でSQL打ったり、前のテーブルの状況を一生懸命調べなくてよくてほんと便利ですね。

前回のマイグレーションをロールバック

php artisan migrate:rollback

前回実行したマイグレーションを取り消すコマンドです。前回の変更はテーブル名の変更がひとつと、lengthというフィールドを追加していました。

実行しても全然変わりません…何かおかしい。別のロールバックの方法を試してみます。

php artisan migrate:rollback --step=1

stepの数字の分ロールバックします。

テーブルがすべてなくなってしまった…(笑)これはまた復習する必要がありそうですね。

さらに調べてみるとマイグレーションでのテーブル削除は、テーブル削除のマイグレーションファイルを作成する必要があるみたいで、その辺の工数が少ないからおかしかったのか?という感じですね…

次回は次の段階に進めるといいのですがもしかしたら進めないかも。

お知らせ

株式会社プラン・ドゥでは一番くじなどで馴染みのあるミシン目の入ったくじの販売を行なっております。



他社ではなかなかできない製品を最適な価格でご案内させていただいておりますのでぜひお問い合わせください。その他の取扱商品はこちらからご覧いただけます。
https://plando-inc.co.jp/product

同じカテゴリの記事

関連記事

スポンサーリンク

DTP

Laravel開発

wordpressカスタマイズ

デジタルマーケティング

ライフハック

動画

当社製品について

Contact各種お問い合わせ

お問い合わせ・ご相談など
まずはお気軽にご相談ください

お仕事のご依頼やご相談、弊社サービス内容に関してなど、お気軽にご相談ください。

トップページ コラム 各種お問い合わせ プライバシーポリシー