前回までの状況はこちら
予約一覧から本日チェックアウトする部屋を探して画面に表示させます。
View
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">本日のチェックアウト時刻</div>
<div class="panel-body">
<table class="checkout">
<tr>
<th class="name">部屋</th>
<th class="time">チェックアウト時刻</th>
</tr>
@foreach ($Lists as $list)
<tr>
<td class="name">{{ $list->roomname }}</td>
<td class="time">{{ $list->checkout }}</td>
</tr>
@endforeach
</table>
</div>
<div>{{ Html::link('/management', '戻る', ['class' => 'btn']) }}</div>
</div>
</div>
</div>
</div>
@endsection
ルーティング
Route::get('/management/checkout', 'RegisterManagementController@checkout');
コントローラー
/**
* 当日のチェックアウト時刻一覧を表示
*/
public function checkout(Request $request)
{
return view('register.checkout',
[
'Lists' => $this->registerManagement->getCheckoutList()
]);
}
リポジトリ
public function getCheckoutList()
{
$ret = array();
$index = 0;
$checkout = ReserveManagement::select('rooms.name as roomname', 'checkout')
->leftJoin('reserve_management_room', 'reserve_managements.id', '=', 'reserve_management_room.reserve_management_id')
->leftJoin('rooms', 'reserve_management_room.room_id', '=', 'rooms.id')
->get();
date_default_timezone_set('Asia/Tokyo');
$today = date("Y-m-d");
foreach ($checkout as $value) {
$str = explode(" ", $value->checkout);
if($today == $str[0]) {
$value->checkout = $str[1];
$ret[$index] = $value;
$index++;
}
}
return $ret;
}
ここまでアップデートする過程で、checkoutがnullになるケースがあったためか、データベースで日付指定でwhereすると、うまく行かないので、結局、全テーブルから日付を全部チェックする、という処理になりました。
もっとうまくできる方法ないかねぇ。
あと、タイムゾーンも考慮しないと、日付の判定がうまく行かないときがあるので、date()関数を使用するときは注意。
こんな感じで最終チェック後、提出します。