gpt4 book ai didi

elixir - 在单个事务中插入多个变更集

转载 作者:行者123 更新时间:2023-12-05 05:12:48 25 4
gpt4 key购买 nike

我有这个桥接表:

schema "rooms_units" do
field(:date_from, :utc_datetime)
field(:date_to, :utc_datetime)
belongs_to(:room, App.Room, primary_key: true)
belongs_to(:unit, App..Unit)
end

我有来 self 的端点的 map 列表,我为每个 map 制作了一个变更集列表。

[

#Ecto.Changeset<
action: nil,
changes: %{
date_from: #DateTime<2016-11-03 13:23:00Z>,
date_to: #DateTime<2016-11-03 13:23:00Z>,
room_id: 255,
unit_id: 296
},
errors: [],
data: #App.RoomUnit<>,
valid?: true

#Ecto.Changeset<
action: nil,
changes: %{
date_from: #DateTime<2016-11-03 13:23:00Z>,
date_to: #DateTime<2016-11-03 13:23:00Z>,
room_id: 256,
unit_id: 296
},
errors: [],
data: #App.RoomUnit<>,
valid?: true
>
]

我想在单个事务中将它插入到 rooms_units 表中。

我尝试了 Ecto.multi.insert_all。但它接受 map 列表而不是变更集。还有其他功能可以帮助我吗

谢谢

最佳答案

使用MyRepo.transaction/2 .

MyRepo.transaction(fn ->
Enum.each(changesets, &MyRepo.update!(&1, []))
end)

关于elixir - 在单个事务中插入多个变更集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54197034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com