检查给定日期是否可从多个表中获得

问题描述

我正在开发在线预订系统,客户将在该系统中搜索带有时间和人数的可用房间。我的数据库表如下所示:

表格:属性

id property_name property_number
1 abc 属性 AB-123
2 定义属性 DF-343

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 :已完成、待处理、正在运行、已取消。如果预订状态已完成或取消,则用户应该可以预订。

用户搜索字段

  • 预订日期
  • 预约开始时间
  • 预订结束时间
  • 总人数
  • 用户提交特定的房产编号

Solution Tried

$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 (将#修改为@)