0

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

优惠 -> 订单 -> 优惠券

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

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

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

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

我该如何进行?

4

1 回答 1

0

COUNT您需要生成的 SQL 查询来使用和做一些魔术GROUP BY。尝试添加这样的字段(未经测试):

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

如果您的 Order -> Coupon 具有简单的 hasMany 关系,则更方便的方法是使用额外coupon_count字段和counterCache 函数跟踪每个 Order 记录中现有的 Coupon 计数。CakePHP 可以自动为您更新该计数器字段。

于 2012-06-14T10:14:10.687 回答