Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 是否为virtualFields使用关联的模型列?_Mysql_Cakephp_Cakephp 1.3 - Fatal编程技术网

Mysql 是否为virtualFields使用关联的模型列?

Mysql 是否为virtualFields使用关联的模型列?,mysql,cakephp,cakephp-1.3,Mysql,Cakephp,Cakephp 1.3,我有一个用户模型和一个订单模型。用户有很多订单 orders表有一个user_id列和一个total列 我希望在用户模型上有一个virtulField,它是与该用户关联的订单数量的计数 我还希望在用户上有一个virtualField,它是所有总数的总和 我唯一能让它工作的方法是: public $virtualFields = array( 'total_orders' => '(SELECT COUNT(orders.user_id) FROM orders WHERE orde

我有一个用户模型和一个订单模型。用户有很多订单

orders表有一个user_id列和一个total列

我希望在用户模型上有一个
virtulField
,它是与该用户关联的订单数量的计数

我还希望在用户上有一个virtualField,它是所有总数的总和

我唯一能让它工作的方法是:

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

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

对于总订单:使用counterCache和counterScope:

不过,总销售额仍然需要virtualField