5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

実務で使える!Laravel既存カラムの順番を変更する方法

Last updated at Posted at 2021-08-04

暇なときに予定を探せるアプリyoteiPickerをリリースしました。

Laravelのマイグレーションで既存カラムの順番を変更する方法を解説します。

laravelのバージョンは6系
mysqlは5.7系。
phpは7.4系です。

>>フリーランスも対象!エンジニア転職におすすめなサイト5選

マイグレーションをすでに作成して、テーブルもできたのにカラムの順番を変更したい時ってあると思います。

booksテーブル
book_id
book_name
category_id

これを、以下のようにしたい。

booksテーブル
book_id
category_id
book_name

真っ先に考えられるのはchangeマイグレーションを作成して、afterで対応すればいいのでは?と思うかもしれませんが、うまくいかないんですよね。

そんな時は、以下の方法を試してみましょう。

まずは、カラムの順番を変更するマイグレーションファイルの作成

php artisan make:migration change_book_name_to_books_table --table=books

以下のようにマイグレーションファイルを編集。

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class ChangeBookNameToBooksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('books', function (Blueprint $table) {
            DB::statement("ALTER TABLE books MODIFY COLUMN book_name varchar(255) NOT NULL AFTER category_id");
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('books', function (Blueprint $table) {
            DB::statement("ALTER TABLE books MODIFY COLUMN book_name varchar(255) NOT NULL AFTER book_id");
        });
    }
}

マイグレーションを実行。

php artisan migrate

このように既存テーブルにあるカラムの順番を変更できました。
スクリーンショット 2021-08-04 22.18.30.png

DB::statement("ALTER TABLE books MODIFY COLUMN book_name varchar(255) NOT NULL AFTER category_id");

ポイントは上記ですが、book_nameの後のvarchar(255) NOT NULLを忘れずに記載してください。

今回はbook_nameの型は文字列(string)でnullを許容しないカラムだったので、このように書きました。
※マイグレーションファイルではstringだが、mySQLではvarcharであることに注意。

数値型の場合は、intとかになります。

他にも記事書いているので、ぜひプロフィールからご参照ください。
・マイグレーション
・クエリビルダなど
書いています。

暇なときに予定を探せるアプリyoteiPickerをリリースしました。

>>Laravelのマイグレーションが怖くない【作成・カラムの追加・削除】
>>【Laravelクエリビルダ】複数のカラムをgroupByでグループ化させる

>>フリーランスも対象!エンジニア転職におすすめなサイト5選

5
5
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
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?