CakePHP查找所有计数条目< =设置参数的语句

时间:2013-06-14 13:56:55

标签: cakephp join count find conditional-statements

为这个头衔而烦恼,但我不知道如何以简短的形式解释我的问题。

我有很多面包店都有很多烤箱。现在我想找一家未使用烤箱的面包店。有没有办法,我的陈述应该如何? 烤箱有时间使烤箱不寻常。即我把一些面包放入烤箱使这个烤箱不能使用2小时。用户可以“租”烤箱。这个烤箱在“使用中”一段时间,保存在面包店的桌子上。在面包店表中也保存了烤箱的数量。在烤箱桌上都是租来的烤箱,即将到来的,跑步的和旧的活动。现在我想找到在特殊时间有免费烤箱的面包店,并希望创建一个类似的条件:

查找所有面包店(在其中计算烤箱的位置(烤箱在时间是空的或(烤箱在租用时间为空时+“在使用中” - 时间))< = count_all_ovens_in_bakery

我创建了一个声明,其中找到了开放时间和烤箱大小,但我不知道如何使用免费烤箱创建此声明

我有一个可怕的英语......

希望你能帮助我

微米。

1 个答案:

答案 0 :(得分:2)

在不了解这些表的架构的情况下,这在黑暗中是一种刺痛。还取决于您如何设置模型关联。假设面包店HasMany烤箱和烤箱BelongsTo面包店。并假设已在模型上设置了包含行为。

  

查找所有面包店(在其中计算烤箱的位置(烤箱在时间是空的或(烤箱在租用时间为空时+“在使用中” - 时间))< = 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')
));