CakePHP递归查找方法

CakePHP递归查找方法,cakephp,Cakephp,在我的CakePHP应用程序中,我有以下模型关联: 优惠->订单->优惠券 然后,在OffersController.php,我需要编写一个find方法来输出 假设某些订单可以有多张优惠券,则每次报价中售出的优惠券数量 问题是我在OffersController中,所以当我尝试使用find('count')时,我只得到了offer条目的数量。我想数一数优惠券条目的数量 我试着做一些类似于$this->Offer->Order->Coupon->find('count')的事情,但它不起作用 我也

在我的CakePHP应用程序中,我有以下模型关联:

优惠->订单->优惠券

然后,在
OffersController.php
,我需要编写一个find方法来输出 假设某些订单可以有多张优惠券,则每次报价中售出的优惠券数量

问题是我在
OffersController
中,所以当我尝试使用
find('count')
时,我只得到了offer条目的数量。我想数一数优惠券条目的数量

我试着做一些类似于
$this->Offer->Order->Coupon->find('count')
的事情,但它不起作用

我也尝试使用ContaineableHelper,但遇到了计算错误条目的相同问题


如何继续?

您需要生成的SQL查询对
COUNT
groupby
进行一些处理。尝试添加如下字段(未测试):


如果您的订单->优惠券有一个简单的hasMany关系,一个更方便的方法是使用一个额外的
优惠券计数
字段跟踪每个订单记录中的现有优惠券计数,CakePHP可以自动为您更新计数器字段。

谢谢,这对我帮助很大。我只是做了一点不同,用find('count')而不是find('all')。
$this->Offer->Order->Coupon->find(
     'all',
     array(
        // Generate a field that counts the coupons per Order
        'fields' => array(
            'COUNT(Coupon.id) AS coupon_count'
        ),
        // Only look at Orders for the given Offer
        'conditions' => array(
            'Order.offer_id' => $id
        ),
        // This is important: group by Order.
        'group' => ('Coupon.order_id')
     )
);