Elixir EXTO-基于关联查询表
我有以下表格:Elixir EXTO-基于关联查询表,elixir,ecto,Elixir,Ecto,我有以下表格: schema "project_users" do belongs_to(:user, MyApp.User) end 及 我想在查询与is有归属关系的用户之后,根据搜索向量结果查询项目用户 我对用户进行了以下查询。我想知道如何将其与项目用户联系起来: def query_all_users(params \\ %{}, preload \\ []) do query = from(u in User, preload: ^preload) query_by(qu
schema "project_users" do
belongs_to(:user, MyApp.User)
end
及
我想在查询与is有归属关系的用户之后,根据搜索向量结果查询项目用户
我对用户进行了以下查询
。我想知道如何将其与项目用户联系起来
:
def query_all_users(params \\ %{}, preload \\ []) do
query = from(u in User, preload: ^preload)
query_by(query, params)
end
defp query_by(query, %{"keyword" => keyword} = params) do
query = from(q in query, where: fragment("search_vector @@ plainto_tsquery(?)", ^keyword))
query_by(query, Map.delete(params, "keyword"))
end
schema "users" do
field(:search_vector, :tsvector)
has_one :project_user, ProjectUser # <---
end
如果我答对了,您需要有一个
/有许多
关系用户
到项目用户
更新架构用户
:
def query_all_users(params \\ %{}, preload \\ []) do
query = from(u in User, preload: ^preload)
query_by(query, params)
end
defp query_by(query, %{"keyword" => keyword} = params) do
query = from(q in query, where: fragment("search_vector @@ plainto_tsquery(?)", ^keyword))
query_by(query, Map.delete(params, "keyword"))
end
schema "users" do
field(:search_vector, :tsvector)
has_one :project_user, ProjectUser # <---
end
我建议进行一个查询,进行连接,然后按如下方式进行筛选:
defmodule ProjectUser do
use Ecto.Schema
import Ecto.Query
schema "project_users" do
belongs_to :user, User
end
@spec by_search_vector(Ecto.Queryable.t, String.t) :: Ecto.Query.t
by_search_vector(query, search_vector) do
from pu in query,
join: u in assoc(pu, :user),
where: fragment("? @@ plainto_tsquery(?)", u.search_vector, ^search_vector)
end
end
这将很容易地缩小项目用户的范围