带有两个表的CakePHP虚拟字段

带有两个表的CakePHP虚拟字段,cakephp,Cakephp,我的网页中有两个表格: 订单: id int(11) NOT NULL AUTO_INCREMENT, created datetime NOT NULL, payed datetime DEFAULT NULL, PRIMARY KEY (`id`) 和订购物品: id int(11) NOT NULL AUTO_INCREMENT, orders_id int(11) NOT NULL, amount int(11) NOT NULL, price float NOT NULL,

我的网页中有两个表格: 订单:

id int(11) NOT NULL AUTO_INCREMENT,    
created datetime NOT NULL,
payed datetime DEFAULT NULL,
PRIMARY KEY (`id`)
和订购物品:

id int(11) NOT NULL AUTO_INCREMENT,
orders_id int(11) NOT NULL,
amount int(11) NOT NULL,
price float NOT NULL,
PRIMARY KEY (`id`)
id, orders_id, amount, price
12, 14, 1, 5
13, 15, 6, 5
一个订单可以有多个订单项。 示例记录、订单:

id int(11) NOT NULL AUTO_INCREMENT,    
created datetime NOT NULL,
payed datetime DEFAULT NULL,
PRIMARY KEY (`id`)
id, created, payed
14, '2013-05-14 22:40:49', NULL
15, '2013-05-14 22:41:03', NULL
订购物品:

id int(11) NOT NULL AUTO_INCREMENT,
orders_id int(11) NOT NULL,
amount int(11) NOT NULL,
price float NOT NULL,
PRIMARY KEY (`id`)
id, orders_id, amount, price
12, 14, 1, 5
13, 15, 6, 5
我需要使用模型以某种方式链接这些表。 主要的是Orders结果集应该包含一个虚拟字段,该字段将显示订单金额:sum(amount*price)。我期待订单表的结果:

id, created, payed, order_sum
14, '2013-05-14 22:40:49', NULL, 5
15, '2013-05-14 22:40:49', NULL, 30
是可能的,还是受虚拟字段限制? 任何帮助或想法都将不胜感激:)我简直不敢相信:)我已经设法解决了这个“问题”

解决方案如下:我在order_items表中添加了另一个字段-sum,其值为amount*price。这是订单模型中的虚拟字段:

        public $virtualFields = array(
            'amount_price'=>'
                SELECT SUM(sum) 
                FROM order_items
                where (orders_id = `Order`.`id`)
                GROUP by orders_id'

希望有帮助,happy baking:)

您可以在订单表中保留一个“总计”字段,然后使用回调方法,如
afterSave()
来更新金额。这样,您就不必每次都运行查询来检索和计算总数。

我不清楚您到底希望结果是什么-您能澄清/简化吗?我想这不是一种理想的方法。