私は、両端の同じモデルを参照する明示的なjoin_schemaとのmany_to_manyの関連付けを持っています(クラシックフォロワー(ユーザ))< - >フォロイ物)。Ecto:many_to_manyクエリで結合スキーマフィールドを含める
私がユーザーのフォロワーを照会すると、ユーザーにフォローしている時間を含める場合、この例に固執する。このデータは明らかに結合スキーマにあります(呼び出しはSubscriptionです)。
ちょうど私がこのようにそれを行うだろう信者たい場合:この作業を持っているために
followers = User
|> Repo.get!(user_id)
|> assoc(:followers)
|> Repo.all()
を、私は、ユーザーにこれを定義しているだろう:
many_to_many(
:followers,
MyApp.User,
join_through: MyApp.Subscription,
join_keys: [followee_id: :id, follower_id: :id]
)
それではがあるとしましょうSubscription
モデルのcreated_at
フィールド。それを取得するために私はどのようにクエリしますか?
私はこれを既に持っていましたが、このケースではフォロワーのリストを得ることは可能かもしれないと考えました。サブスクリプションリストがphoenixの 'render_many'を壊してしまったので、私はこの方法を望んでいました。 とにかくもう一度試してみましたが、それは "FollowerView"なので明らかに一致しないスキーマ名のキーを推測することがわかりました。しかし、明示的に定義する方法があります。 問題は解決しました。 :) – fahrradflucht