LoginSignup
3
6

More than 3 years have passed since last update.

【Laravel】usersテーブルにカラムを追加する

Last updated at Posted at 2020-07-11

内容

はじめにマイグレーションを行うと、usersテーブルにnameとemailなどができるが、プロフィールを作成しようとすると、性別や年齢、自己紹介文などが欲しくなります。
そこで、既存のusersテーブルにカラムを追加する作業を行います。

前提

laravel7で行います。
すでにマイグレーションを行っているものとします。

% php artisan migrate

 方法

  1. マイグレーションファイルを作成
  2. カラムを追加
  3. マイグレーション
  4. User.phpの編集

マイグレーションファイルの作成

% php artisan make:migration add_column_to_users_table --table=users

どういう操作をするかわかりやすいファイル名にすると良いでしょう。
--tableオプションでどのテーブルを編集するか指定します。

カラムを追加

20XX_00_00_000000_add_column_to_users_table.php
class AddColumnToUsersTable extends Migration
{
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->string('body')->nullable();
        });
    }

    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('body');
        });
    }
}

up()に追加処理を書き、down()にロールバック処理を書きます。

マイグレーション

% php artisan migrate

User.php

app/User.php
    protected $fillable = [
        'name', 'email', 'password', 'body'
    ];

User.php内の\$fillableに追加カラムを追加します(ここではbodyを追加)
これをしておかないと、更新時など
    \$user->fill(\$request->all())->save();
のfill()で追加カラムが弾かれてしまいます。

おわり

これでおわりです。
テーブルをいじるときは新しくマイグレーションファイルを作成するようにしましょう。
そうしないと、ロールバックする時正しく動作しなかったり、テーブルが崩れたりします。

おまけ

カラムを削除するときなど、カラムを変更する際、以下のコマンドを実行する必要があります。

% composer require doctrine/dbal

テーブルのカラムを調べたいときは、tinkerでSchema::getColumnListing('table_name');を実行すると良いでしょう。

3
6
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
3
6