【问题标题】:restaurant table availability check for a particular time using sql使用 sql 检查特定时间的餐厅餐桌可用性
【发布时间】:2023-04-10 12:30:02
【问题描述】:

我正在尝试使用 yii 框架构建一个餐厅餐桌管理应用程序,目前我被困在检索特定时间的餐桌可用性

我有以下表格

下图显示了我的表结构

我正在使用以下代码获取可用表

    $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 表中不存在表 ID 时才有效

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

那么如何在 yii 或 sql 中获取任何解决方案在特定时间段内的可用表

【问题讨论】:

  • 好问题!只是出于好奇,你选择 YII 的原因是什么?
  • 学起来简单,开发进度会很快
  • 无论是查询构建器还是 sql,我都需要一个解决方案 @rdlowrey
  • 我认为使用框架通过代码排列和可重用性让生活更轻松
  • 发布您目前的查询,看看是否有人可以改进它。您的架构中的预订日期/时间在哪里?

标签: php mysql sql yii


【解决方案1】:

既然你接受 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()”替换为您需要的任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多