我的网页上有两个表格: 订单:
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
是否可能,或者受虚拟字段限制? 任何帮助或想法将不胜感激:)
答案 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()
之类的回调方法更新金额。这样,您就不必每次都运行查询来检索和计算总计。