我有一个order
表。该表的一列是总价。
Total price
的计算方法是将order_item
和item_attribute
的所有价格相加
当用户删除order_item
时,我想删除所有相关的item_attribute
到order_item
。因此,在计算总价时,它应该扣除order_item
和item_attribute
的价格。
为此我做了如下代码
order_item_total = Repo.one!(from p in Pos8.OrderItem, where: p.order_id == ^order_id, select: sum(p.item_total))
total_item_attributes_price = Repo.one!(from p in Pos8.ItemAttribute, where: p.order_id == ^order_id, select: sum(p.price))
order_total_query = (order_item_total + total_item_attributes_price)
Pos8.Order.changeset(order, %{total: order_total_query})
|> Repo.insert_or_update
删除order_item
和item_attribute
后,会选择与order_item
相关的item_attribute
和order_id
总价的总和。然后将其值输入Order数据库。
但是,它会触发(ArithmeticError) bad argument in arithmetic expression
。这表明order_total_query = (order_item_total + total_item_attributes_price)
在算术表达式中不是有效参数...
如何在正确的算术表达式中计算order_total_query
?
提前致谢。