Ich habe eine many_to_many-Verknüpfung mit einem expliziten join_schema, das auf beiden Seiten auf das gleiche Modell verweist (Art des klassischen Follower (ist ein Benutzer) < -> Followee (ist ein Benutzer) Ding).Ecto: Join-Schema-Feld in many_to_many-Abfrage einfügen
Um bei dem Beispiel zu bleiben, wenn ich nach den Followern eines Benutzers abfrage, möchte ich die Zeit einschließen, wenn der Benutzer folgt. Diese Daten befinden sich offensichtlich im Join-Schema (nennen wir es Subscription).
Wenn würde nur die Anhänger wollen würde ich es tun, wie folgt:
followers = User
|> Repo.get!(user_id)
|> assoc(:followers)
|> Repo.all()
Um diese Arbeit habe ich diese auf den Benutzer definiert haben würde:
many_to_many(
:followers,
MyApp.User,
join_through: MyApp.Subscription,
join_keys: [followee_id: :id, follower_id: :id]
)
Also lassen Sie uns sagen, es ist ein created_at
Feld auf dem Modell Subscription
. Wie würde ich fragen, um es zu bekommen?
Nun, ich hatte das schon, aber dachte, es wäre möglich, eine Liste von - in diesem Fall - Follower zu bekommen. Ich wollte es so, weil die Subskriptionsliste phoenix's 'render_many' zerbrach. Wie auch immer, ich versuchte es noch einmal und fand heraus, dass es den Schlüssel aus dem Schemanamen leitet, der offensichtlich nicht übereinstimmen wird, weil es ein "FollowerView" ist. Aber es gibt eine Möglichkeit, es explizit zu definieren. So Problem gelöst, thx! :) – fahrradflucht