CakePHP:SQL查询蛋糕->;查找()

CakePHP:SQL查询蛋糕->;查找(),sql,cakephp,Sql,Cakephp,首先,这是我的建议 我试着用每天订购的某个元素的数量做一个图表 date | count 2011-04-22 | 10348 2011-04-23 | 2751 因为我对SQL更熟悉,所以我首先想到了这一点,这就是最终的结果(并且有效) 现在为了提高我的找蛋糕技巧,我试图理解如何将其转换为查找(“列表”)或查找(“全部”)查询,但我真的不知道该如何处理这个问题 任何帮助都将不胜感激 $this->DeliveryNote->bindModel(array( '

首先,这是我的建议

我试着用每天订购的某个元素的数量做一个图表

date       | count
2011-04-22 | 10348
2011-04-23 | 2751
因为我对SQL更熟悉,所以我首先想到了这一点,这就是最终的结果(并且有效)

现在为了提高我的找蛋糕技巧,我试图理解如何将其转换为查找(“列表”)或查找(“全部”)查询,但我真的不知道该如何处理这个问题

任何帮助都将不胜感激

$this->DeliveryNote->bindModel(array(
    'hasOne'=>array(
        'DeliveryNotesProduct'=>array(
            'conditions'=>array('DeliveryNotesProduct.DeliveryNoteId = DeliveryNote.id')
        ),
        'Product'=>array(
            'conditions'=>array('DeliveryNotesProduct.ProductId = Product.id')
        ),
        'ElementsProduct'=>array(
            'conditions'=>array('ElementsProduct.ProductId  = Product.id')
        ),
        'Element'=>array(
            'conditions'=>array('ElementsProduct.ElementId  = Element.id')
        )

    )
));


$data = $this->DeliveryNote->find('all',array(
    'conditions'=>array(
        'Element.id'=>4,
        'DeliveryNote.DeliveryDate BETWEEN ? AND ?'=>array('2011-04-22','2011-05-22')),
    'fields'=>array('DeliveryNote.DeliveryDate','SUM(DeliveryNotesProduct.Count * ElementsProduct.Count) AS count'),
    'group'=>array('DeliveryNote.DeliveryDate')
));
Cakephp
bindModel
用于连接表,
hasOne
是关联类型之一

我个人不得不通过打电话给几个发现者来实现这一点。一次都没找到。要将其实现为单个sql查询,我建议在模型中创建一个函数,该函数正好执行此查询。谢谢!虽然已经这样做了,但我只是想知道是否有一种更“容易结块”的方法;)刚刚试过,但给了我奇怪的SQL错误。。。(即使在解除绑定其他模型后)
SQL错误:1054:on子句中的未知列“Product.delivery\u note\u id”
Product.delivery\u note\u id;我没有在整个查询中使用它。。可能还有其他问题。。。看看你们所有的模型(包括在查询中),我认为这个问题与你们的模型有关。这很奇怪,我已经提前解除了所有模型的绑定。。。尽管如此,多亏了你的链接,我找到了它,这使它起了作用;)
$this->DeliveryNote->bindModel(array(
    'hasOne'=>array(
        'DeliveryNotesProduct'=>array(
            'conditions'=>array('DeliveryNotesProduct.DeliveryNoteId = DeliveryNote.id')
        ),
        'Product'=>array(
            'conditions'=>array('DeliveryNotesProduct.ProductId = Product.id')
        ),
        'ElementsProduct'=>array(
            'conditions'=>array('ElementsProduct.ProductId  = Product.id')
        ),
        'Element'=>array(
            'conditions'=>array('ElementsProduct.ElementId  = Element.id')
        )

    )
));


$data = $this->DeliveryNote->find('all',array(
    'conditions'=>array(
        'Element.id'=>4,
        'DeliveryNote.DeliveryDate BETWEEN ? AND ?'=>array('2011-04-22','2011-05-22')),
    'fields'=>array('DeliveryNote.DeliveryDate','SUM(DeliveryNotesProduct.Count * ElementsProduct.Count) AS count'),
    'group'=>array('DeliveryNote.DeliveryDate')
));