我是 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) 我试图找出如何使用苦艾酒在查询中的嵌套项目上使用参数。
我试图完成的是:
{
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)