Tor*_*ito 1 elixir ecto phoenix-framework
我正在尝试删除一个项目及其所有子项:
where(ParentModel, [x], x.user_id == 123)
|> first
|> Repo.delete()
# or
# Repo.delete(where(ParentModel, [x], x.user_id == 123))
Run Code Online (Sandbox Code Playgroud)
两者都抛出异常:
function Ecto.Query.__changeset__/0 is undefined or private
Run Code Online (Sandbox Code Playgroud)
它与验证有什么关系?
在父模型中,我有 on_delete: :delete_all
更换first()
用两种Repo.one!()
或Repo.delete_all()
。Ecto.Query.first()
返回查询,但Repo.delete()
需要模型的结构或变更集。如果您将其传递给查询,则只会感到困惑。
通过使用Repo.one!()
,您首先要获取结构,然后将其传递给Repo.delete()
,Repo.delete()
可以使用。
Repo.delete_all()
可以接受查询,但是它将直接删除与查询匹配的所有内容。所以要小心
归档时间: |
|
查看次数: |
674 次 |
最近记录: |