我有一个简单的旅馆预订系统,不确定如何在数据库中建模可用性(例如,通过Eloquent)。旅馆要比预订旅馆要简单,实际上只是一个大房间。但是,数据库中将有多个旅馆(由不同的所有者经营)。因此,我当前的数据库表为:来宾,旅馆(包括所有者详细信息),预订(即从日期Y到日期Z住在X旅馆的W人)和付款(住宿的付款金额)。显然,它们是捆绑在一起的(例如,与ID引用或其他某种关系)。

但是如果有空房,我需要代表某个特定旅馆在任何特定日期的可用床位数,例如接下来的一两年。什么是有效的方法?

感谢您的任何建议。

最佳答案

当通过查询日期是否可用然后将其存储在特定旅馆中来简化可用性时,为什么需要对可用性进行建模?

例如:


你有旅馆。
在日历中,您将显示该旅馆从抵达到离开的日期。
访客选择了一个日期并提交
检查日期是否与该旅馆的预订日期相交。
如果该旅馆的任何预订日期都没有交叉点,则可用。
将其保存在数据库上。


如果要表示特定旅馆的床位数,则需要建模而不是可用性,因为指定了多少张床用于提供信息。

class HostelBed extends Model {

    protected $fillable = ['count', 'from', 'to'];

    public function hostel()
    {
        return $this->belongsTo(Hostel::class);
    }
}


查询日历中的所有床,然后将其显示在日历中或您想要的任何位置。

10-05 23:06