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