我有用户模型和订单模型。用户 hasMany 订单。
订单表有一个user_id列和一个总列。
我想在User模型上有一个virtulField
,它是与该用户关联的订单数量的计数。
我还希望在用户上有一个虚拟字段,它是所有总数的总和。
我能够让它发挥作用的唯一方法是:
public $virtualFields = array(
'total_orders' => '(SELECT COUNT(orders.user_id) FROM orders WHERE orders.user_id = User.id AND orders.status != "void" GROUP BY orders.user_id)',
'total_sales' => '(SELECT SUM(orders.total) FROM orders WHERE orders.user_id = User.id AND orders.status != "void" GROUP BY orders.user_id)',
);
我不确定这是否是最佳解决方案,是否有更好的方法?
答案 0 :(得分:0)
总订单:使用counterCcope与counterScope:http://book.cakephp.org/view/1033/counterCache-Cache-your-count
你仍然需要virtualField来进行总销售。