0

このタイトルには申し訳ありませんが、私の問題を短い形式で説明する方法がわかりません。

私は多くのオーブンを備えたベーカリーをたくさん持っています。今、オーブンが使われていないベーカリーを探しています。方法はありますか?私のステートメントはどのように見えるべきですか? オーブンには、オーブンを異常にする時間があります。つまり、パンをオーブンに入れると、このオーブンが 2 時間使用できなくなります。ユーザーはオーブンを「レンタル」できます。このオーブンはしばらくの間「使用中」で、bakery-table に保存されています。ベーカリーテーブルにはオーブンの数も保存されています。オーブンテーブルには、すべてのレンタルオーブン、今後のイベント、実行中のイベント、古いイベントがあります。今、私は特別な時間に無料のオーブンがあるベーカリーを見つけて、次のような条件を作成したいと考えています:

すべてのベーカリーを検索します where (その中のオーブンを数えます where(オーブンは時間に空です または (オーブンは賃貸時間 + 「使用中」の時間に空です)) <= count_all_ovens_in_bakery

オープン時間とオーブンのサイズが記載されたステートメントを作成しましたが、無料のオーブンでこのステートメントを作成する方法がわかりません

すみません、私はひどい英語を持っています...

あなたが私を助けてくれることを願っています

M.

4

1 に答える 1

2

これらのテーブルのスキーマを知らなければ、これは暗黒面での突き刺しのようなものです。また、モデルの関連付けをどのように設定したかによっても異なります。ベーカリーには多くのオーブンがあり、オーブンはベーカリーに属しているとします。また、Containable Behavior がモデルに設定されていると仮定します。

すべてのベーカリーを検索します where (その中のオーブンを数えます where(オーブンは時間に空です または (オーブンは賃貸時間 + 「使用中」の時間に空です)) <= count_all_ovens_in_bakery

$freeOvens = $this->Oven->find('all', array(
    'fields' => array(
        'COUNT(Bakery.id) AS NUM_BAKERIES',
        'COUNT(Oven.id) AS NUM_OVENS',
        // Any other fields you want included
    ),
    'conditions' => array(
        'OR' => array(
            // Oven is empty at time,
            // Oven is empty at (rent-time + in-use-time)
        )
    ),
    'recursive' => 2,
    'contain' => array(
        'Bakery'
    ),
    'group' => array('Bakery.id'),
    'order' => array('Bakery.name', 'NUM_OVENS DESC')
));
于 2013-06-14T14:07:15.707 に答える