前回までの状況はこちら
最新ソースはこちら(gitHub)
https://github.com/takishita2nd/hotel-mng
さて、これからどんな形にしていこうかというと、
- ユーザー登録時にユーザー情報を入力する(フルネーム、住所、電話番号)
- 予約登録時にはログインユーザーの情報を使用するので、ユーザー情報の入力を省く
- 部屋ごとに利用できる(空きのある)日と、利用できない(ほかユーザーが予約済み)日をわかるようにする
というのが必要かなと。
まずは、ユーザー登録処理を修正しましょうか。
というわけで、データベースのカラムを追加します。
$ php artisan make:migration move_column_name_address_phone_to_users_table --table=users
class MoveColumnNameAddressPhoneToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('fullname')->after('email');
$table->string('address')->after('fullname');
$table->string('phone')->after('address');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('fullname');
$table->dropColumn('address');
$table->dropColumn('phone');
});
}
}
$ php artisan migrate
これで、usersテーブルにフルネーム、住所、電話番号のカラムが作成されました。
Viewを書き換えます。
<div class="form-group{{ $errors->has('fullname') ? ' has-error' : '' }}">
<label for="fullname" class="col-md-4 control-label">Full Name</label>
<div class="col-md-6">
<input id="fullname" type="text" class="form-control" name="fullname" value="{{ old('fullname') }}" required autofocus>
@if ($errors->has('fullname'))
<span class="help-block">
<strong>{{ $errors->first('fullname') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('address') ? ' has-error' : '' }}">
<label for="address" class="col-md-4 control-label">Address</label>
<div class="col-md-6">
<input id="address" type="text" class="form-control" name="address" value="{{ old('address') }}" required autofocus>
@if ($errors->has('address'))
<span class="help-block">
<strong>{{ $errors->first('address') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('phone') ? ' has-error' : '' }}">
<label for="phone" class="col-md-4 control-label">phone</label>
<div class="col-md-6">
<input id="phone" type="text" class="form-control" name="phone" value="{{ old('phone') }}" required autofocus>
@if ($errors->has('phone'))
<span class="help-block">
<strong>{{ $errors->first('phone') }}</strong>
</span>
@endif
</div>
</div>
register.blade.phpに上の部分を書き足しました。
登録処理も書き換えます。
app/User.phpを以下のように書き換えます。
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'fullname', 'address', 'phone', 'email', 'password',
];
これは、usersテーブルのカラムを設定している箇所です。
これを実際のカラム名に合わせなければ、正しくデータベースに反映されません。
次に、パラメータチェックです。
registerController.phpのバリデートルールを書き足します。
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255',
'fullname' => 'required|string|max:255',
'address' => 'required|string|max:255',
'phone' => 'required|digits:11',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
}
そして、実際にユーザーを作る処理。
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'fullname' => $data['fullname'],
'address' => $data['address'],
'phone' => $data['phone'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
これで、ユーザー情報を追加することができました。