小编Gul*_*ver的帖子

如何使用 Ecto 的 has_many 和 cast_assoc

我是 Elixir 和 Ecto 的新手,我需要一些有关 Ecto 的 has_many 和 cast_assoc 的帮助。无法理解基础知识,例如我如何使用关联模型创建新模型。

这是我的 Has_Model:

defmodule Example.Has_Model do
  use Ecto.Schema
  import Ecto.Changeset
  alias Example.Repo
  alias Example.Has_Model

  schema "has_models" do
    has_many :belong_models, Example.Belong_Model
    field :name, string
    timestamps
  end

  def changeset(has_model, params \\ %{}) do
    has_model
    |> cast(params, [:name])
  end
end
Run Code Online (Sandbox Code Playgroud)

这是 Belong_Model:

defmodule Example.Belong_Model do
  use Ecto.Schema
  import Ecto.Changeset
  alias Example.Repo
  alias Example.Belong_Model

  schema "belong_models" do
    belongs_to :has_model, Example.Has_Model
    field :name, string
    timestamps
  end

  def changeset(belong_model, params \\ %{}) do
    belong_model
    |> cast(params, …
Run Code Online (Sandbox Code Playgroud)

elixir ecto

5
推荐指数
1
解决办法
4417
查看次数

如何使用 Elixir 中的苦艾酒在查询中的嵌套项目上使用参数?

我试图找出如何使用苦艾酒在查询中的嵌套项目上使用参数。

我试图完成的是:

{
  users(order: ASC) {
    id
    email
    clients(order: DESC) {
      id
      email
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的架构和类型:

  query do
    @desc "Get all users"
    field :users, list_of(:user) do
      arg :order, type: :sort_order, default_value: :asc
      resolve &Resolvers.users/2
    end
  end

  @desc "A user"
  object :user do
    field :id, :id
    field :email, :string
    field :clients, list_of(:user)
  end  
Run Code Online (Sandbox Code Playgroud)

和解析器:

  def users(_, args, _) do
    args
    |> Enum.reduce(User, fn
      {:order, order}, query ->
        query |> order_by({^order, :email})
    end)
    |> Repo.all |> Repo.preload([:clients])
  end
Run Code Online (Sandbox Code Playgroud)

所以我的问题是我应该如何以及在哪里为客户放置排序参数?通过上面的例子我得到一个错误:

"message": "Unknown …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework graphql absinthe

2
推荐指数
1
解决办法
1566
查看次数

标签 统计

elixir ×2

absinthe ×1

ecto ×1

graphql ×1

phoenix-framework ×1