内容
はじめにマイグレーションを行うと、usersテーブルにnameとemailなどができるが、プロフィールを作成しようとすると、性別や年齢、自己紹介文などが欲しくなります。
そこで、既存のusersテーブルにカラムを追加する作業を行います。
前提
laravel7で行います。
すでにマイグレーションを行っているものとします。
% php artisan migrate
方法
- マイグレーションファイルを作成
- カラムを追加
- マイグレーション
- User.phpの編集
マイグレーションファイルの作成
% php artisan make:migration add_column_to_users_table --table=users
どういう操作をするかわかりやすいファイル名にすると良いでしょう。
--tableオプションでどのテーブルを編集するか指定します。
カラムを追加
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
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');を実行すると良いでしょう。