6

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);

これは、テーブルIDがbooking_tableテーブルに存在しない場合にのみ機能します

Booking_tableテーブルにテーブルIDが入力されているとすると、上記のコードは機能せず、常に使用不可として返されます(使用可能なテーブルを取得するために時間を使用する方法の手がかりはありません)

では、特定の期間に利用可能なテーブルをyiiまたはsqlのソリューションで取得するにはどうすればよいですか?

4

1 に答える 1

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()」を必要なものに置き換えます。

于 2012-11-27T18:27:01.000 に答える