0

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

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

订单项目:

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

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

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

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

4

2 回答 2

0

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

于 2013-05-15T13:02:17.070 回答
0

我不敢相信:) 我已经设法解决了这个“问题”。

这是解决方案:我在 order_items 表中添加了另一个字段 - 总和它的值是 amount*price。这是 Order 模型中的 Virtual 字段:

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

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

于 2013-05-15T12:48:31.470 回答