餐厅表可用性使用sql检查特定时间

时间:2012-11-27 18:07:24

标签: php mysql sql yii

我正在尝试使用yii框架构建餐馆餐桌管理应用程序,目前我在特定时间检索表的可用性时遇到困难

我有以下表格

下图显示了我的表结构

enter image description here

我通过使用以下代码获得可用表

    $model = new Table;
    $criteria = new CDbCriteria;
    $criteria->condition = 'floor_id=' . $floorid;
    $rows = $model->model()->with(array(
                'bookingTables' => array(
                    'condition' => 'bookingTables.table_id IS NULL'
                    )))->findAll($criteria);

仅当booking_table表中没有表ids时才有效

假设如果说booking_table表填充了表格id,那么上面的代码将无效,它将始终返回为不可用(不知道如何使用时间获取可用表格)

那么如何在yii或sql

中的任何解决方案中获取特定时间段的可用表

1 个答案:

答案 0 :(得分:2)

既然您同时接受SQL和YII,我会在SQL中为您提供解决方案。

如果您想在特定时间检查可用性,您需要知道预订日期(包括小时),所以让我们考虑在“booking_table”表中添加“reservation_date”字段,让我们考虑一下预订在开始后2小时结束。 这就是我将在SQL中做的事情:

SELECT t.table_id
FROM TABLE AS t
LEFT OUTER JOIN booking_table AS b ON b.booking_table_id = t.table_id
WHERE b.booking_id IS NULL
    OR DATE_ADD(NOW(), INTERVAL 2 HOUR) > b.reservation_date

此查询在执行时列出所有可用表。如果您想在特定时间检查可用性,请将NOW()替换为您需要的任何内容。