使用virtualFields的关联模型列?

时间:2011-08-09 16:28:10

标签: mysql cakephp cakephp-1.3

我有用户模型和订单模型。用户 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)',
);

我不确定这是否是最佳解决方案,是否有更好的方法?

1 个答案:

答案 0 :(得分:0)

总订单:使用counterCcope与counterScope:http://book.cakephp.org/view/1033/counterCache-Cache-your-count

你仍然需要virtualField来进行总销售。