在我的CakePHP应用程序中,我有以下模型关联:
优惠 - >订单 - >优惠券
然后,在OffersController.php
,我需要编写一个find方法来输出
假设某些订单可以有多张优惠券,每张优惠券上出售的优惠券数量。
问题是我在OffersController
,所以当我尝试使用find('count')
时,我只获得了优惠条目的数量。我想计算优惠券条目的数量。
我试图做$this->Offer->Order->Coupon->find('count')
之类的事情,但它不起作用。
我也尝试使用ContainableHelper,但遇到了计算错误条目的同样问题。
我该怎么办?
答案 0 :(得分:0)
您需要生成的SQL查询才能对COUNT
和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')
)
);
如果您的订单 - >优惠券有一个简单的hasMany关系,更方便的方法是使用额外的coupon_count
字段跟踪每个订单记录中的现有优惠券计数,counterCache function. CakePHP可以自动为您更新该计数器字段