テーブルのカラムの型を変更
今回、文字型から整数型(INT)に変更した時に、上手くいかなかったのでメモ
- 変更用のマイグレーションファイルを作成
$ php artisan make:migration add_users_table --table=users
add_(マイグレーションファイル名)_table
--table=(テーブル名)
2018_06_01_11111_add_users_table.php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
});
}
}
このようなマイグレーションファイルができたら
- upメソッドの中にカラム属性の変更をかく
- changeメソッドは、存在するカラムを新しいタイプへ変更するか、カラムの属性を変更
2018_06_01_11111_add_users_table.php
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->integer('status')->change();
});
}
- downメソッドに削除したいカラムをかく
2018_06_01_11111_add_users_table.php
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('status');
});
}
- マイグレーションを実行して、カラムを変更する
$ php artisan migrate
テーブルにカラムを追加
マイグレーションファイルを作成
-
upメソッドの中に追加するカラムをかく
- after( ) 追加するカラムを入れたい場所を指定
- nullable( ) NULL対応したい場合に使用
2018_06_01_11111_add_users_table.php
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('email')->after('name')->nullable();
});
}
2018_06_01_11111_add_users_table.php
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('email');
});
}
- マイグレーションを実行して、カラムを追加する
$ php artisan migrate
テーブルのカラム名を変更
- マイグレーションファイルを作成
- laravelのデフォルトでは、カラム名の変更はできない
- doctrine/dbalをインストールしないといけない
$ composer require doctrine/dbal
- renameColumn( ) を使用する
- upメソッド内には、'現在のカラム名', '変更後のカラム名'の順番
2018_06_01_11111_add_users_table.php
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('email','tel');
});
}
- downメソッド内には、'変更後のカラム名', '現在のカラム名'の順番
2018_06_01_11111_add_users_table.php
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('tel','email');
});
}
- マイグレーションを実行して、カラム名を変更する
$ php artisan migrate