おおまかな流れです。
1. データベース設計(Excel、ER図など)
2. MySQLでデータベースを作成(create database ${database name})
3. .envファイルの編集
4. migrationファイルの作成(php artisan make:migration)
5. エディターでyyyy_mm_dd_hhmmss_{table name}_table.phpの編集
5-1. 作成するカラムを書く
5-2. 必要に応じてカラム修飾子をつける
5-3. 必要に応じてインデックスをカラムに貼る
6. migrateの実行(php artisan migrate)
さあやってごらん。
えー そういわれても。。。
ということで、1.データベース設計、2.Mysqlのデータベース作成、3. .envファイルの編集はできている前提で、4以降のmigrationファイルの作成から、5.カラムの追加、6.migrationの実行まで細かく見ていきたいと思います。
サンプルとして、”exam”というテーブルを作りたいと思います。
sqlだとこうなります。
create table exam( id INT AUTO_INCREMENT, manu_id INT, judge CHAR(1), created_by INT, created_at DATETIME, );
Lets go!
1. migrationファイルの作成
–create=${table name}として、オプションでtable名を指定します。
[vagrant@localhost zeus]$ php artisan make:migration create_exam_tables --create=exam Created Migration: 2018_11_18_112643_create_exam_tables
2. エディターでyyyy_mm_dd_hhmmss_create_exam_table.phpの編集
/database/migrations のディレクトリ配下にmake:migrateで以下のようなファイルが生成されています。この中で、16行目のSchema::createのfunction(Blueprint $table){}の中にカラムを指定していきます。
use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateExamTables extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('exam', function (Blueprint $table) { $table->increments('id'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('exam'); } }
3. 作成するカラムを書く
使用するカラムは公式ドキュメントを見ながら編集していきます。
https://readouble.com/laravel/5.7/ja/migrations.html
今回はINT->integer, CHAR->char, DATETIME->timestampsで記載していきます。
public function up() { Schema::create('exam', function (Blueprint $table) { $table->increments('id'); $table->integer('manu_id'); $table->char('judge'); $table->timestamps(''); }); }
4. 必要に応じてカラム修飾子をつける
‘id’にAUTO_INCREMENTを付けます。
こちらも、公式ドキュメントを参考にします。
https://readouble.com/laravel/5.7/ja/migrations.html
public function up() { Schema::create('exam', function (Blueprint $table) { $table->increments('id')->autoIncrement(); $table->integer('manu_id'); $table->char('judge'); $table->timestamps(''); }); }
5. 必要に応じてインデックスをカラムに貼る
今回はナシ
6. migrateの実行(php artisan migrate)
[vagrant@localhost zeus]$ php artisan migrate
Migrating: 2018_11_18_112643_create_exam_tables
Migrated: 2018_11_18_112643_create_exam_tables
7. MySQLで確認
期待したテーブル、カラムが作成されたかmysqlのdescribe examで確認
出来たぞー
idはちゃんとprimary key, autincrementになってます。
これを応用して、テーブルを作っていきましょう♪ (私はこれから10個位テーブルを作ります)