3
虽然我经过查询资料库由this answer这样的启发:为什么我得到协议Enumerable没有为#Ecto.Query实现?
teams_users = Repo.all (from(t in Team, where: t.owner_id == ^user_id))
|> Enum.each(&team_users/1)
def team_users (team) do
%{id: id} = team
Repo.all (from(tu in TeamUser, where: tu.team_id == ^id))
end
不过,我得到这个错误:
[error] GenServer #PID<0.450.0> terminating
** (Protocol.UndefinedError) protocol Enumerable not implemented for #Ecto.Query<from t in App.Team, where: t.owner_id == ^1>
(elixir) lib/enum.ex:1: Enumerable.impl_for!/1
(elixir) lib/enum.ex:116: Enumerable.reduce/3
(elixir) lib/enum.ex:1477: Enum.reduce/3
(elixir) lib/enum.ex:609: Enum.each/2
(App) web/channels/user_channel.ex:93: App.UserChannel.handle_in/3
(phoenix) lib/phoenix/channel/server.ex:223: Phoenix.Channel.Server.handle_info/2
(stdlib) gen_server.erl:615: :gen_server.try_dispatch/4
(stdlib) gen_server.erl:681: :gen_server.handle_msg/5
(stdlib) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
什么我试图做的是让所有的球队,然后获得每个团队的用户,那么我希望所有的用户都在一个阵列中。
我想念什么?有什么建议?有没有更好的方法来实现这一目标?
但是,我将如何定义模式Team中的关联:team_users?我正在使用ecto 3.0-rc,并且我已经有了多对多的表格,但是我没有在我的团队,用户模式中添加任何关联.. – simo
https://hexdocs.pm/ecto/Ecto.Schema.html #has_many/3和https://hexdocs.pm/ecto/Ecto.Schema.html#belongs_to/3应该可以帮助你。 – Gazler
我不能添加'belongs_to'给用户,因为它没有'table_id',我正在使用另一个表'team_user'来链接拥有'user_id,team_id'的团队和用户如何定义多对多关联? – simo