前のパートに戻る 完了して次のパートへ  

  2-5 新規登録の際にユーザーの必要な情報を持たせる

2章(2-2)で実施したphp artisan make:authは、

名前、メールアドレス、パスワードの情報を保存する様になっています。

それ以外の情報を保存するには、カラムを追加する必要があります。

今回のパートではユーザーの性別、詳細情報、画像を保存するための開発をしていきます。


学習キーワード


- カラム
- マイグレーション


カラムを追加するマイグレーションファイルを作成する


まずは現在のusersテーブル情報を確認します。 ファイルパスは以下です。

techpit-match/database/migrations
└── 2014_10_12_000000_craete_users_table.php

ファイルの中身はこのようになっています。

現在のusersテーブルのカラムは下記になっています。

  • increments('id') ・・ ユーザーごとのユニークID
  • string('name') ・・名前
  • string('email')->unique() ・・メールアドレス(ユニーク)
  • sring('password') ・・パスワード
  • rememberToken() ・・トークン(パスワードリセット用)
  • timestamps() ・・タイムスタンプ(updated_atとcreated_at)

新たにカラムを追加する場合は、このファイルを編集するのではなく、

カラムを追加するためのマイグレーションファイルを作成します。 (そうすることで、テーブルのカラムが増えた、減ったなどの履歴を管理しています。)

コマンドプロンプトで下記コマンドを入力します。

$ php artisan make:migration add_column_to_users_table

下記のように表示されればOKです。

$ php artisan make:migration add_column_to_users_table
Created Migration: 2019_05_03_201221_add_column_to_users_table

生成された下記ファイルを編集します。

techpit-match/database/migrations
└── 2019_05_03_201221_add_column_to_users_table.php

upメソッドの中に、

追加したいテーブル名(今回はusers)と、追加したいカラムの情報を記載します。

今回は、 詳細情報、性別、画像ファイルのパス情報を新たに追加することにします。

php artisan migrateとコマンド入力し、下記の様に表示されればOKです。

$ php artisan migrate
Migrating: 2019_05_03_201221_add_column_to_users_table
Migrated:  2019_05_03_201221_add_column_to_users_table

新規登録時に追加したカラムも保存できるようにする


詳細情報・性別・画像情報のカラムを追加できましたが、

この状態のままでは、新規登録時に保存する事ができません。

追加したカラムも保存できる様にするためには、

モデルファイルの$fillableという箇所に追記する必要があります。

techpit-match/app/User.php

モデルファイルの中に$fillableを設定している場合は、 $fillableで設定されているカラムのみ新規登録できることになります。

次に、実際にデータ保存処理を行うコントローラー側にも追記していきます。

ユーザー登録の処理は、RegisterController.phpに記載されています。

techpit-match/app/Http/Controllers/Auth
└── RegisterController.php

createメソッドで実際に保存されるので下記の様に追記します。

$data['self_introduction']などの記載は、 ビューファイル側のname属性と一致している必要がありますので注意してください。 (ビューファイルは次の章で作成します)

また、'img_name' => $data['img_name'],については、 2章(2-8)で編集・機能追加しますので、 このまま次へ進んでいただければと思います。

これで、ユーザー登録時に 詳細情報・性別・画像情報も保存できる準備ができました。

以上で今回のパートは終了です、お疲れ様でした。

議論

5 質問

このコースの評価は?