2017-03-15 5 views
0

私は function createReservation()機能では、このチュートリアル を習得しようとしている:Laravelモデルの空の数値プロパティは、デクリメントされると負になりますか?

while (strtotime($date) < strtotime($end_dt)) 
{ 
    $room_calendar = RoomCalendar::where('day','=',$date) 
     ->where('room_type_id','=',$room_info['id'])->first(); 

    $night = ReservationNight::create(); 
    $night->day=$date; 

    $night->rate=$room_calendar->rate; 
    $night->room_type_id=$room_info['id']; 
    $night->reservation_id=$reservation->id; 

    $room_calendar->availability--; 
    $room_calendar->reservations++; 

    $room_calendar->save(); 
    $night->save(); 

    $date = date ("Y-m-d", strtotime("+1 day", strtotime($date))); 
} 

$room_calendar->availabilityはデフォルト値はありません。それが減ると負になるのではないでしょうか?

答えて

1

可用性のデータベース列が符号なし整数である場合は負になり、エラーもスローされます。

クエリ自体で問題を解決できます。あなたのwhileループ内 あなたのコード内のブロックが$ room_calendarがゼロよりも大きいかどうかをチェックする場合にも、Aを入れた後、あなたはおよそ$room_calendar

$room_calendar = RoomCalendar::where('day','=',$date) 
       ->where('room_type_id','=',$room_info['id']) 
       ->where('availability','>=',0) 
       ->first(); 

を照会しています。あなたは可用性ゼロを持つ任意の部屋を取得することはありません。このように、この

if($room_calendar->count()) 
{ 
    $night = ReservationNight::create(); 
    $night->day=$date; 

    $night->rate=$room_calendar->rate; 
    $night->room_type_id=$room_info['id']; 
    $night->reservation_id=$reservation->id; 

    $room_calendar->availability--; 
    $room_calendar->reservations++; 

    $room_calendar->save(); 
    $night->save(); 

    $date = date ("Y-m-d", strtotime("+1 day", strtotime($date))); 
} 

よう

何か。

希望すると、これが役立ちます。

+0

ご返信ありがとうございます。それでも、「可用性」フィールドのすべての値がマイナスになるわけではありませんか? where( 'availability'、 '> ='、0)は結果を返しません。 –

+0

喜んで助けてください:) – Vikash

+0

申し訳ありません。私はあなたに返信を更新しました。 –

関連する問題