什么是CTEs?
使用CTEs实现Ecto的邻接列表与树的遍历.
Arbor
使用parent_id
和CTEs
创建简单的树状结构.
使用
defmodule Comment do use Ecto.Schema # See config options below use Arbor.Tree,foreign_key_type: :binary_id schema "comments" do field :body,:string belongs_to :parent,Arbor.Comment timestamps end end
获取根级节点
roots = Comment.roots |> Repo.all
获取兄弟节点
siblings = my_comment |> Comment.siblings |> Comment.order_by_popularity |> Repo.all
获取祖先节点
获取当前节点的先辈节点,从下网上返回所有父辈节点. 主要用于显示一个分类导航路径(类似网站的Breadcrumbs
面包屑功能)
descendants = my_comment |> Comment.ancestors |> Comment.order_by_inserted_at |> Repo.all
获取后代节点
获取当前节点的所有后代节点,返回后代节点列表
descendants = my_comment |> Comment.descendants |> Comment.order_by_inserted_at |> Repo.all
获取子节点
获取当前节点的所有子节点
children = my_comment |> Comment.children |> Repo.all
获取父节点
获取当前节点的父节点
parent = my_comment |> Comment.parent |> Repo.first
选项
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。