前回までの状況はこちら
最新ソースはこちら
https://github.com/takishita2nd/hotel-mng
今回は中身薄いかも。
スケジュール画面に部屋名を表示させます。
難しいことはなく、画面に部屋名の表示を付け足すだけです。
<table class="schedule">
<tr>
<th class="date">日時</th>
<th class="name">名前</th>
<th class="room">部屋</th>
<th class="lodging">宿泊状況</th>
</tr>
@foreach ($Lists as $list)
<tr>
<td class="date">{{ $list['day'] }}</td>
<td class="name">{{ $list['name'] }}</td>
<td class="room">{{ $list['room'] }}</td>
@if ($list['lodging'])
<td class="lodging">チェック</td>
@else
<td class="lodging">未チェック</td>
@endif
</tr>
@endforeach
</table>
/**
* スケジュール一覧を取得する
*/
public function getSchedule()
{
$lists = array();
$index = 0;
$models = ReserveDayList::orderBy('day')
->get();
foreach($models as $model)
{
$lists[$index] = array(
'day' => $model->day,
'name' => $model->reserveManagements()->first()->name,
'room' => $model->reserveManagements()->first()->rooms()->first()->name,
'lodging' => $model->reserveManagements()->first()->lodging
);
$index++;
}
return $lists;
}
/**
* 月別スケジュール一覧を取得する
*/
public function getScheduleByMonth($year, $month)
{
$lists = array();
$index = 0;
$models = ReserveDayList::where('day', '>=', date('Y-m-d', strtotime('first day of '.$year.'-'.$month)))
->where('day', '<=', date('Y-m-d', strtotime('last day of '.$year.'-'.$month)))
->orderBy('day')
->get();
foreach($models as $model)
{
$lists[$index] = array(
'day' => $model->day,
'name' => $model->reserveManagements()->first()->name,
'room' => $model->reserveManagements()->rooms()->first()->name,
'lodging' => $model->reserveManagements()->first()->lodging
);
$index++;
}
return $lists;
}
レコード一件ずつ参照してデータを取り出しているので、同じようにリレーションを使って部屋テーブルの部屋名を取り出している、という感じですね。
今回は難しくなかった。
残るは、部屋の競合チェック処理を変えなくちゃいけないのと、部屋でフィルタ表示させたい。
あとは部屋ごとの集計かな。
バナークリックで応援よろしくお願いします。