如何解决检查给定日期是否可从多个表中获得
我正在开发在线预订系统,客户将在该系统中搜索带有时间和人数的可用房间。我的数据库表如下所示:
表格:属性
property_number 是唯一字段
桌子:房间
id | 房间名称 | 容量 | property_number |
---|---|---|---|
1 | 一号房 | 150 | AB-123 |
1 | 二号房 | 500 | AB-123 |
2 | 一号房 | 500 | DF-343 |
property_number 是表 property
中的外键表:预订
id | property_number | room_id | book_status | book_start | book_end |
---|---|---|---|---|---|
1 | AB-123 | 1 | 活动 | 2021-06-06 10:00:00 | 2021-06-06 18:00:00 |
property_number 是表 property
中的外键room_d 是表 Room
中的外键book_status :已完成、待处理、正在运行、已取消。如果预订状态已完成或取消,则用户应该可以预订。
- 预订日期
- 预约开始时间
- 预订结束时间
- 总人数
- 用户提交特定的房产编号
$property = Property:::where('status','active')->where('property_number',$property_number)->firstOrFail();
$bookings = $property->bookings()
->whereBetween('event_date_start',[$event_start,$event_end])
->orWhereBetween('event_date_end',$event_end])
->orWhere( function ( $query ) use ($event_start,$event_end) {
$query->where('event_date_start','<',$event_start)->where('event_date_end','>',$event_end);
})
->get();
Model Structure
Table: **Property**
Class Property extends Model {
public function bookings(){
return $this->hasMany(Bookings::class,'property_number','property_number');
}
public function rooms(){
return $this->hasMany(Rooms::class,'property_number');
}
}
Table: **Rooms**
Class Rooms extends Model {
public function property(){
return $this->belongsTo(Property::class,'property_number');
}
public function bookings(){
return $this->hasMany(Bookings::class,'room_id');
}
}
Table: **Bookings**
Class Bookings extends Model {
}
这种方式它只检查财产,而不是与财产相关的每个房间。
- 如何检查所提供的物业是否有可供预订的房间。*
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。