Laravelで既存テーブルにカラムを追加したい場合は、マイグレーションを使うのが基本です。
直接DBを触るのではなく、マイグレーションで管理することで、
- チーム開発でも安全
- 本番環境との整合性が保てる
- 変更履歴が残る
といったメリットがあります。
今回は「usersテーブルにプロフィール情報を追加する」という例で解説します。
カラムを追加する流れ
Laravelでカラムを追加する流れは以下の4ステップです。
- マイグレーション作成
- ファイル編集(up / down)
- migrate実行
- tinkerで確認
❶ マイグレーションでカラムを追加する
まずはマイグレーションファイルを作成するため、以下のコマンドを実行します。
php artisan make:migration add_profile_columns_to_users_table --table=usersコマンドのポイント
add_profile_columns_to_users_table- 「usersテーブルにcolumnsを追加する」という意味の命名
--table=users- 既存テーブルを変更することを明示
実行すると、database/migrations ディレクトリにファイルが生成されます。
❷ マイグレーションファイルを編集
生成されたファイルdatabase/migrations/xxxx_add_columns_to_users_table.php
を開いて、必要があれば編集します。基本的にはそのままでOKです。xxxxには、コマンドを実行したときの日時(2026_03_03_041133のような形)が入ります。
例:カラム追加コード
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('profile_name')->nullable()->comment('表示名');
$table->text('bio')->nullable()->comment('自己紹介');
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn([
'profile_name',
'bio',
]);
});
}各処理の解説
up() メソッド
up() メソッドは、マイグレーション実行時に動く処理です。
ここに「追加するカラム」を記述します。
string()→ 文字列型(VARCHAR)text()→ 長文テキストnullable()→ NULLを許可comment()→ カラムの説明
down() メソッド
down() メソッドは、マイグレーションを元に戻すための処理を書く場所です。
Laravelでは、以下のコマンドでロールバック(取り消し)ができます。
php artisan migrate:rollbackこのとき実行されるのが down() です。
例えば、
- 本番環境で不具合が発生した
- カラム設計を間違えた
- テスト用に一度戻したい
このような場合、down() が正しく書かれていないと 安全に元に戻せません。
つまり、
up() が「変更」
down() が「取り消し」
この2つは 必ずセットで考える必要があります。
❸ マイグレーション実行
編集が終わったら、マイグレーションを実行します。
このとき、up()メソッドが実行されます。
php artisan migrateエラーが出なければ、DBへのカラム追加は完了です。
❹ 確認(tinker)
正しく追加されたか確認するには tinker を使うと便利です。
php artisan tinkerApp\Models\User::all();ここで追加したカラムが取得できればOKです。
よくあるエラー
SQLSTATE エラーが出る場合
- 既に同名カラムが存在していないか
- マイグレーションファイルを編集し忘れていないか
--tableを付け忘れて新規テーブル扱いになっていないか
を確認しましょう。
まとめ
Laravelでカラムを追加する流れは以下の4ステップです。
- マイグレーション作成
- ファイル編集(up / down)
- migrate実行
- tinkerで確認
直接DBを触らず、必ずマイグレーションで管理するのがベストプラクティスです。
