CakePHP虚拟字段有两个表

时间:2013-05-15 07:10:56

标签: cakephp

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

id int(11) NOT NULL AUTO_INCREMENT,    
created datetime NOT NULL,
payed datetime DEFAULT NULL,
PRIMARY KEY (`id`)

和Order_items:

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`)

一个订单可以包含许多Order_items。 示例记录,订单:

id, created, payed
14, '2013-05-14 22:40:49', NULL
15, '2013-05-14 22:41:03', NULL

ORDER_ITEMS:

id, orders_id, amount, price
12, 14, 1, 5
13, 15, 6, 5

我需要以某种方式使用模型链接这些表。 主要的是Orders结果集应该包含一个虚拟字段,它将显示订单金额:SUM(金额*价格)。我期待Orders表的结果:

id, created, payed, order_sum
14, '2013-05-14 22:40:49', NULL, 5
15, '2013-05-14 22:40:49', NULL, 30

是否可能,或者受虚拟字段限制? 任何帮助或想法将不胜感激:)

2 个答案:

答案 0 :(得分:0)

我无法相信:)我设法解决了这个“问题”。

以下是解决方案:我在order_items表中添加了另一个字段 - 总和它的值为* price。这是订单模型中的虚拟字段:

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

希望它有所帮助,快乐烘焙:)

答案 1 :(得分:0)

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