2018/10/12
Laravel5.2にあるマイグレーション機能を使ってDBのテーブルおよびモデルを作成します。
目標
- DBのテーブルの作成
- 上記のテーブルに対応したモデルの作成
事前知識
Laravelのマイグレーション機能について理解しておく必要があります。
テーブルの仕様
テーブル名 crud
- 名前
- メールアドレス
- 性別
- 年齢
- 都道府県
- 誕生日
- 電話番号
進め方
【1】マイグレーションファイルの生成
【2】マイグレーションファイルの編集
【3】マイグレーションの実行
【4】モデルの作成
【5】tinkerコマンドでレコードの挿入
【6】動作確認
【1】マイグレーションファイルの生成
php artisan make:migration create_crud_table --create=crud
【解説】
オプションで同時にテーブル(crud)も作成
マイグレーションファイル名はcreate_{テーブル名}_tableとつけるのが通例
オプションで同時にテーブル(crud)も作成
マイグレーションファイル名はcreate_{テーブル名}_tableとつけるのが通例
【2】マイグレーションファイルの編集
生成されたマイグレーションファイルのup()に以下を追記します。
: $table->increments('id'); $table->string('name', 32); /* 追加 */ $table->string('mail'); /* 追加 */ $table->string('gender'); /* 追加 */ $table->integer('age'); /* 追加 */ $table->string('pref'); /* 追加 */ $table->string('birthday'); /* 追加 */ $table->string('tel',11); /* 追加 */ $table->timestamps(); :
【3】マイグレーションの実行
編集したマイグレーションファイルを実行してDBのテーブル反映させるには以下のコマンドを入力します。
$ php artisan migrate
ここで一旦ちゃんとcrudテーブルができたか確認してみます。
XAMPPのphpMyAdminで確認
【4】モデルの作成
テーブルができたので次はそのテーブルに対応するモデルを作ります。
Artisanコマンドを使ってcrudテーブルに対応するモデルを作成します。
モデル名はCrudにします。
php artisan make:model Crud
Artisanコマンドで自動生成されたapp/Crud.phpを編集します。
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Crud extends Model { /** * モデルと関連しているテーブル * * @var string */ protected $table = 'crud'; }
【解説】
モデルのtableプロパティを定義し、カスタムテーブル名"crud"を指定します。
テーブル名が複数形(cruds)でモデル名が単数形(crud)の場合は上記の記述はいりません。
自動的にテーブルとモデルが紐付けされます。
今回"cruds"という名前が気に入らなかったので通例とは違ったやり方をしています。
モデルのtableプロパティを定義し、カスタムテーブル名"crud"を指定します。
テーブル名が複数形(cruds)でモデル名が単数形(crud)の場合は上記の記述はいりません。
自動的にテーブルとモデルが紐付けされます。
今回"cruds"という名前が気に入らなかったので通例とは違ったやり方をしています。
【5】tinkerコマンドでレコードの挿入
tinkerコマンドを使ってレコードを追加してみます。
php artisan tinker $crud = new App\Crud(); $crud->name = 'abe naoto'; $crud->mail = 'abe_naoto@example.com'; $crud->gender = 'man'; $crud->age = '21'; $crud->pref = 'Fukui'; $crud->birthday = '1994/12/24'; $crud->tel = '080-5808-7152'; $crud->save();
【解説】
コマンドプロンプトから日本語入力すると文字化けが発生するので、全て半角英数字で入力します。
コマンドプロンプトから日本語入力すると文字化けが発生するので、全て半角英数字で入力します。
【6】動作確認
XAMPPのPhpMyAdminでレコードが挿入されているか確認
以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。