laravel MySQL tinyInteger型のカラムのコメントを変更
目的
- laravel TinyInteger型のカラムのコメントをマイグレーションファイルで書き換える方法をまとめる
環境
- ハードウェア環境
- ハードウェア環境
項目 | 情報 |
---|---|
OS | macOS Catalina(10.15.5) |
ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
プロセッサ | 2 GHz クアッドコアIntel Core i5 |
メモリ | 32 GB 3733 MHz LPDDR4 |
グラフィックス | Intel Iris Plus Graphics 1536 MB |
- ソフトウェア環境
項目 | 情報 | 備考 |
---|---|---|
PHP バージョン | 7.4.8 | Homebrewを用いてこちらの方法で導入→Mac HomebrewでPHPをインストールする |
Laravel バージョン | 8.6.0 | commposerを用いてこちらの方法で導入→Mac Laravelの環境構築を行う |
MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | Homwbrewを用いてこちらの方法で導入→Mac HomebrewでMySQLをインストールする |
情報
- 筆者はlaravel8にて本記事の内容の検証を実施した。未検証ながら他のバージョンでも本方法で実施する事が可能だと思う。
-
下記のマイグレーションファイルを実行してusersテーブルのremember_tokenにTinyInt型の「flag」カラムを追加する。
アプリ名ディレクトリ/database/migrations/2020_12_28_124905_change_users_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class ChangeUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->tinyInteger('flag')->after('remember_token')->comment('フラッグ用のカラム');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColmun('flag');
});
}
}
-
上記のマイグレーションファイルをマイグレートした後のusersテーブルのカラム情報を下記に記載する。(下記情報はSQL文show full columns from users;
で確認した。)
Field
Type
Collation
Null
Key
Default
Extra
Privileges
Comment
id
bigint unsigned
NULL
NO
PRI
NULL
auto_increment
select,insert,update,references
name
varchar(255)
utf8mb4_unicode_ci
NO
NULL
select,insert,update,references
email
varchar(255)
utf8mb4_unicode_ci
NO
UNI
NULL
select,insert,update,references
email_verified_at
timestamp
NULL
YES
NULL
select,insert,update,references
password
varchar(255)
utf8mb4_unicode_ci
NO
NULL
select,insert,update,references
remember_token
varchar(100)
utf8mb4_unicode_ci
YES
NULL
select,insert,update,references
flag
tinyint
NULL
NO
NULL
select,insert,update,references
フラッグ用のカラム
created_at
timestamp
NULL
YES
NULL
select,insert,update,references
updated_at
timestamp
NULL
YES
NULL
select,insert,update,references
概要
- マイグレーションファイルの作成と記載
- マイグレートと確認
詳細
-
マイグレーションファイルの作成と記載
-
アプリ名ディレクトリで下記コマンドを実行してマイグレーションファイルを作成する。
$ php artisan make:migration change_flag_column_to_users_table --table=users
-
作成されたファイルを開き下記のように追記する。
アプリ名ディレクトリ/database/migrations/2020_12_28_130526_change_flag_column_to_users_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
// 下記を追記
use Illuminate\Support\Facades\DB;
class ChangeFlagColumnToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
//下記を追記、データ型やnullの制約などの情報も記載を忘れずにする
DB::statement('alter table users change column flag flag tinyint not null comment \'フラッグ用のカラム(1:->on 0->off)\'');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
//下記を追記
DB::statement('alter table users change column flag flag tinyint not null comment \'フラッグ用のカラム\'');
});
}
}
-
マイグレートと確認
-
アプリ名ディレクトリで下記コマンドを実行してマイグレートを実行する。
$ php artisan migrate
-
MySQLにターミナルからログインし下記SQLを実行する。
show full columns from users;
-
下記のようにflagカラムのComment部分が変更された。
Field
Type
Collation
Null
Key
Default
Extra
Privileges
Comment
id
bigint unsigned
NULL
NO
PRI
NULL
auto_increment
select,insert,update,references
name
varchar(255)
utf8mb4_unicode_ci
NO
NULL
select,insert,update,references
email
varchar(255)
utf8mb4_unicode_ci
NO
UNI
NULL
select,insert,update,references
email_verified_at
timestamp
NULL
YES
NULL
select,insert,update,references
password
varchar(255)
utf8mb4_unicode_ci
NO
NULL
select,insert,update,references
remember_token
varchar(100)
utf8mb4_unicode_ci
YES
NULL
select,insert,update,references
flag
tinyint
NULL
NO
NULL
select,insert,update,references
フラッグ用のカラム(1:->on 0->off)
created_at
timestamp
NULL
YES
NULL
select,insert,update,references
updated_at
timestamp
NULL
YES
NULL
select,insert,update,references
個人メモ
- TinyInt型はchange()でカラム情報を修正する事ができない。そのため、DBファサードを用いてSQLを実行した。
- マイグレーションファイルでDBファサードを使用できるようにしてstatementメソッドを用いてカラムコメントを設定するSQLを実行する。
- コメントを設定するSQLのシングルクオート
'
はエスケープして文字列として扱われるようにする。
下記のマイグレーションファイルを実行してusersテーブルのremember_tokenにTinyInt型の「flag」カラムを追加する。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class ChangeUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->tinyInteger('flag')->after('remember_token')->comment('フラッグ用のカラム');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColmun('flag');
});
}
}
上記のマイグレーションファイルをマイグレートした後のusersテーブルのカラム情報を下記に記載する。(下記情報はSQL文show full columns from users;
で確認した。)
Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
---|---|---|---|---|---|---|---|---|
id | bigint unsigned | NULL | NO | PRI | NULL | auto_increment | select,insert,update,references | |
name | varchar(255) | utf8mb4_unicode_ci | NO | NULL | select,insert,update,references | |||
varchar(255) | utf8mb4_unicode_ci | NO | UNI | NULL | select,insert,update,references | |||
email_verified_at | timestamp | NULL | YES | NULL | select,insert,update,references | |||
password | varchar(255) | utf8mb4_unicode_ci | NO | NULL | select,insert,update,references | |||
remember_token | varchar(100) | utf8mb4_unicode_ci | YES | NULL | select,insert,update,references | |||
flag | tinyint | NULL | NO | NULL | select,insert,update,references | フラッグ用のカラム | ||
created_at | timestamp | NULL | YES | NULL | select,insert,update,references | |||
updated_at | timestamp | NULL | YES | NULL | select,insert,update,references |
- マイグレーションファイルの作成と記載
- マイグレートと確認
詳細
-
マイグレーションファイルの作成と記載
-
アプリ名ディレクトリで下記コマンドを実行してマイグレーションファイルを作成する。
$ php artisan make:migration change_flag_column_to_users_table --table=users
-
作成されたファイルを開き下記のように追記する。
アプリ名ディレクトリ/database/migrations/2020_12_28_130526_change_flag_column_to_users_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
// 下記を追記
use Illuminate\Support\Facades\DB;
class ChangeFlagColumnToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
//下記を追記、データ型やnullの制約などの情報も記載を忘れずにする
DB::statement('alter table users change column flag flag tinyint not null comment \'フラッグ用のカラム(1:->on 0->off)\'');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
//下記を追記
DB::statement('alter table users change column flag flag tinyint not null comment \'フラッグ用のカラム\'');
});
}
}
-
マイグレートと確認
-
アプリ名ディレクトリで下記コマンドを実行してマイグレートを実行する。
$ php artisan migrate
-
MySQLにターミナルからログインし下記SQLを実行する。
show full columns from users;
-
下記のようにflagカラムのComment部分が変更された。
Field
Type
Collation
Null
Key
Default
Extra
Privileges
Comment
id
bigint unsigned
NULL
NO
PRI
NULL
auto_increment
select,insert,update,references
name
varchar(255)
utf8mb4_unicode_ci
NO
NULL
select,insert,update,references
email
varchar(255)
utf8mb4_unicode_ci
NO
UNI
NULL
select,insert,update,references
email_verified_at
timestamp
NULL
YES
NULL
select,insert,update,references
password
varchar(255)
utf8mb4_unicode_ci
NO
NULL
select,insert,update,references
remember_token
varchar(100)
utf8mb4_unicode_ci
YES
NULL
select,insert,update,references
flag
tinyint
NULL
NO
NULL
select,insert,update,references
フラッグ用のカラム(1:->on 0->off)
created_at
timestamp
NULL
YES
NULL
select,insert,update,references
updated_at
timestamp
NULL
YES
NULL
select,insert,update,references
個人メモ
- TinyInt型はchange()でカラム情報を修正する事ができない。そのため、DBファサードを用いてSQLを実行した。
- マイグレーションファイルでDBファサードを使用できるようにしてstatementメソッドを用いてカラムコメントを設定するSQLを実行する。
- コメントを設定するSQLのシングルクオート
'
はエスケープして文字列として扱われるようにする。
マイグレーションファイルの作成と記載
-
アプリ名ディレクトリで下記コマンドを実行してマイグレーションファイルを作成する。
$ php artisan make:migration change_flag_column_to_users_table --table=users
-
作成されたファイルを開き下記のように追記する。
アプリ名ディレクトリ/database/migrations/2020_12_28_130526_change_flag_column_to_users_table.php<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; // 下記を追記 use Illuminate\Support\Facades\DB; class ChangeFlagColumnToUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('users', function (Blueprint $table) { //下記を追記、データ型やnullの制約などの情報も記載を忘れずにする DB::statement('alter table users change column flag flag tinyint not null comment \'フラッグ用のカラム(1:->on 0->off)\''); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('users', function (Blueprint $table) { //下記を追記 DB::statement('alter table users change column flag flag tinyint not null comment \'フラッグ用のカラム\''); }); } }
マイグレートと確認
-
アプリ名ディレクトリで下記コマンドを実行してマイグレートを実行する。
$ php artisan migrate
-
MySQLにターミナルからログインし下記SQLを実行する。
show full columns from users;
-
下記のようにflagカラムのComment部分が変更された。
Field Type Collation Null Key Default Extra Privileges Comment id bigint unsigned NULL NO PRI NULL auto_increment select,insert,update,references name varchar(255) utf8mb4_unicode_ci NO NULL select,insert,update,references email varchar(255) utf8mb4_unicode_ci NO UNI NULL select,insert,update,references email_verified_at timestamp NULL YES NULL select,insert,update,references password varchar(255) utf8mb4_unicode_ci NO NULL select,insert,update,references remember_token varchar(100) utf8mb4_unicode_ci YES NULL select,insert,update,references flag tinyint NULL NO NULL select,insert,update,references フラッグ用のカラム(1:->on 0->off) created_at timestamp NULL YES NULL select,insert,update,references updated_at timestamp NULL YES NULL select,insert,update,references
- TinyInt型はchange()でカラム情報を修正する事ができない。そのため、DBファサードを用いてSQLを実行した。
- マイグレーションファイルでDBファサードを使用できるようにしてstatementメソッドを用いてカラムコメントを設定するSQLを実行する。
- コメントを設定するSQLのシングルクオート
'
はエスケープして文字列として扱われるようにする。
Author And Source
この問題について(laravel MySQL tinyInteger型のカラムのコメントを変更), 我々は、より多くの情報をここで見つけました https://qiita.com/miriwo/items/86c7f86b1f85cd273d38著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .