Laravelのマイグレーションでカラム名を変更するには、renameColumn()
を使います。
renameColumn()を使うにはcomposerでdoctrine/dbalをインストールしておきます。
> composer require doctrine/dbal
doctrine/dbalをインストールしておかないと以下のようなエラーでマイグレーションが失敗します。
# php artisan migrate
Migrating: 2020_03_16_173458_rename_local_to_user_table
Symfony\Component\Debug\Exception\FatalThrowableError : Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found
at /var/www/vendor/laravel/framework/src/Illuminate/Database/MySqlConnection.php:65
61| * @return \Doctrine\DBAL\Driver\PDOMySql\Driver
62| */
63| protected function getDoctrineDriver()
64| {
> 65| return new DoctrineDriver;
66| }
67|
68| /**
69| * Bind values to their parameters in the given statement.
Exception trace:
1 Illuminate\Database\MySqlConnection::getDoctrineDriver()
/var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php:892
2 Illuminate\Database\Connection::getDoctrineSchemaManager()
/var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php:880
Please use the argument -v to see more details.
doctrine/dbalがインストールできたらマイグレーションファイルを以下のようにします。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddLocalToUserTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
// カラム名をnameからuser_nameに変更する
$table->renameColumn('name', 'user_name');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
// ロールバック時にカラムを元に戻す
$table->renameColumn('user_name', 'name');
});
}
}
マイグレーションの基本的な使い方は以下に書いています。
カラム名の変更は以上です。
逆引きLaravel目次
Laravelでルートパラメータ(パスパラメータ)を取得する
LaravelでフォームのMethodをPUTやDELETEに変える
Laravelでフォームリクエストの型を定義してバリデーションする
Laravelのコントローラのアクションでモデル型を受け取る(モデル結合ルート)
LaravelでCookie(クッキー)の取得、書き込み、削除をする
Laradock
Laradockのworkspaceの共有ディレクトリを変更する
データベース
Laravelでデータベースのテーブル名を変更する(マイグレーション)
Laravelでデータベースのテーブルにカラムを追加する(マイグレーション)
Laravelで指定したカラムの次にカラムを追加する(マイグレーション)
Laravelでテーブルのカラム名を変更する(マイグレーション)
Laravelのmigrationでテーブルにunique制約を追加する
ルーティング
Laravelで特定のプレフィックスがついたURLのルーティングをまとめて定義する
ミドルウェア
認証
Laravelで未ログインユーザーがアクセスしたらログインフォームを表示する
LaravelのViewでログイン状態によって表示切替する方法