使用 Ecto 持久化数据
1. Ecto 基础操作与查询
1.1 数据持久化与查询灵活性
Ecto 提供了强大且灵活的数据库操作工具。例如,我们可以使用 Repo.preload(:files) 预加载关联数据。来看一个示例,假设我们有一个用户相关的数据操作:
iex> xpto_user_with_files.files |> Enum.count
2
iex> Storage.delete(jose_user.id, file.id)
08:55:04.018 [debug] QUERY OK db=3.3ms
DELETE FROM "storage_media" WHERE "id" = $1 ["13Kvv5GQey9oPFWEAqqSFECYGag"]
{:ok,
%ElixirDrip.Storage.Media{
__meta__: #Ecto.Schema.Metadata<:deleted, "storage_media">,
id: "13Kvv5GQey9oPFWEAqqSFECYGag",
# ...
}}
iex> xpto_user_with_files = xpto_user_with_files |> Repo.preload(:files, force: true)
iex> xpto_user_with_files.files |> Enum.count
1
这里,我们先统计了用户关联的文件数量,然后删除了一个文件,最后强制重新预加载
超级会员免费看
订阅专栏 解锁全文
13

被折叠的 条评论
为什么被折叠?



