我在凤凰城教程中学习,但在购物车行为中使用Tds适配器( Server)。使用on_conflict选项插入代码失败,下面是代码
def add_item_to_cart(%Cart{} = cart, %Catalog.Product{} = product) do
%CartItem{quantity: 1, price_when_carted: product.price}
|> CartItem.changeset(%{})
|> Ecto.Changeset.put_assoc(:cart, cart)
|> Ecto.Changeset.put_assoc(:product, product)
|> Repo.insert(
on_conflict: [inc: [quantity: 1]],
conflict_target: [:cart_id, :product_id]
)
end错误是Tds适配器只支持on_conflict: :raise,我正在按照本教程进行尝试,并想知道它是否是一个死胡同,或者是否有实现相同目标的替代方案。
发布于 2022-07-13 08:16:53
有三种选择。
1
on_conflict: :raise),并从rescue子句1将增加quantity的查询,首先为[:cart_id, :product_id]发出select查询,如果它返回一个空结果,则调用add_item_to_cart/2,否则通过最佳的一个E 217/code>增加d12,使用本教程推荐的数据库(例如:PostgreSQL)H 218F 219https://stackoverflow.com/questions/72961062
复制相似问题