Laravel:ユーザー登録時にroleも一緒にcreateする方法
Laravel:ユーザー登録時にroleも一緒にcreateする方法
管理者による新規ユーザー作成関連として、前回までの記事で下記構成を構築しました。
この状態でユーザーの登録項目を変更しようとしたところ、新設した項目(role等)が初期値で入ってしまいました。
以前カスタマイズした場所なのですが、すっかり忘れていたので備忘録に残します。
項目追加時は2個所の変更が必要です
- \app\Http\Controllers\RegisterController.php
- \app\User.php
ControllerとModelです。
よく考えれば当たり前なのですが、私はUser.phpの変更をすっかり忘れてしまいました。
そのため、roleの値が初期値で登録されるという現象が発生していました。
RegisterController.phpに追記
/**
* Get a validator for an incoming registration request.
* 着信登録要求のバリデータを取得します。
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
'role' => 'required|Integer|max:2', //追加ヶ所
]);
}
/**
* Create a new user instance after a valid registration.
* 有効な登録後に新しいユーザーインスタンスを作成します。
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'role' => $data['role'], //追加ヶ所
]);
}
バリデータとクリエイトに新規追加時に登録したい値を記載します。
User.phpに追記
protected $fillable = [
'name',
'email',
'password',
'role', //追加ヶ所
];
$fillable の中に新規追加時に登録したい値を記載します。
まとめ
この2つのファイルを変更すれば良いだけなので、例えば『苗字と名前を分ける』『ログインIDを新設する』なんて時も簡単に対応できます。

