对象和 %Object{} 之间的区别

Difference between Object and %Object{}

我想知道这两个对象有什么区别 -> Object 和 %Object{}。

1)

  def get_parents() do
    Object
    |> select([m], {m.id, m.name})
    |> where([m], is_nil(m.parent_id))
    |> Repo.all()
  end
  1. def get_parents() do
      %Object{}
      |> select([m], {m.id, m.name})
      |> where([m], is_nil(m.parent_id))
      |> Repo.all()
    end
    

不胜感激。

Object是一个原子,代表module%Object{} 是在 Object 模块中声明的 struct 对象。

Ecto.Query.select/3 具有作为第一个参数传递的原子和结构的子句,基本上,当传递原子时,将创建默认结构并进一步传递,如下所示(实际实现要复杂得多)

def select(module, binding, expr) when is_atom(module),
  do: select(%module{}, binding, expr)

我强烈建议您在成为 Ecto 之前先学习语言基础知识。