Which Ecto version are you using? *José Valim* www.plataformatec.com.br Skype: jv.ptec Founder and Director of R&D
On Thu, May 26, 2016 at 6:30 PM, <[email protected]> wrote: > So I have been digging a little deeper and Ecto is issuing the following > query: > > *SELECT r0."id", *snip*, o1."offer_id" FROM "rates" AS r0 INNER JOIN > "offers_rates" AS o1 ON o1."offer_id" = ANY($1) WHERE (o1."rate_id" = > r0."id") ORDER BY o1."offer_id" [[<<163, 3, 242, 94, 74, 2, 77, 110, 159, > 78, 123, 64, 97, 42, 5, 33>>]]* > > > This comes up as an empty association in my code. When I do the following > query in psql however, I do get the result I expect: > > *SELECT * FROM rates INNER JOIN offers_rates ON > offers_rates.offer_id='a303f25e-4a02-4d6e-9f4e-7b40612a0521' WHERE > offers_rates.rate_id = rates.id <http://rates.id>; * > > > Does this offer some more insight? > > Op donderdag 26 mei 2016 18:09:47 UTC+2 schreef [email protected]: > >> Hi José, >> >> Thanks for the fast response. That doesn't seem to do it however. If I do >> not preload anything, I get an error message saying that the offers are not >> preloaded. If I preload the offers, it says the rates are not preloaded, >> and if I preload everything, with force set to true, the rates are still >> empty. Is there anything else I can try? >> >> Op donderdag 26 mei 2016 17:07:36 UTC+2 schreef José Valim: >>> >>> Try: >>> >>> *offers = Repo.preload(shipment, [offers: :rates], force: true)* >>> >>> If the association was already loaded, we won't load over it. >>> >>> *José Valim* >>> www.plataformatec.com.br >>> Skype: jv.ptec >>> Founder and Director of R&D >>> >>> On Thu, May 26, 2016 at 5:05 PM, <[email protected]> wrote: >>> >>>> Hello, >>>> >>>> I have a many-to-many relationship defined as follows: >>>> >>>> * schema "rates" do* >>>> * many_to_many :offers, Offer, join_through: "offers_rates"* >>>> * end* >>>> >>>> >>>> * schema "offers" do* >>>> * many_to_many :rates, Rate, join_through: "offers_rates"* >>>> * end * >>>> >>>> >>>> The offers_rates table is simply a table that has a offer_id column, >>>> and a rate_id column. I am saving records as follows: >>>> >>>> * Enum.map rates, fn (rate) ->* >>>> * Offer.changeset(%Offer{rates: [rate]}, %{shipment_id: >>>> rate.shipment_id, percentage: 1.05})* >>>> * |> Repo.insert!()* >>>> * end * >>>> >>>> >>>> For every rate, this is generating an offer. I am association the rates >>>> with the offer in the changeset. This seems to work as I can see the join >>>> table being filled properly. When I try to fetch them later, the >>>> association is empty however: >>>> >>>> *offers = Repo.preload(shipment, offers: :rates)* >>>> >>>> >>>> * %Offer{rates: []} * >>>> >>>> >>>> Are these the proper ways of association records and fetching them from >>>> the database again? Any push in the right direction is greatly appreciated. >>>> >>>> Thanks! >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "elixir-lang-talk" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/elixir-lang-talk/90e0e96e-a6ca-4111-b4cc-e9d180b99b6b%40googlegroups.com >>>> <https://groups.google.com/d/msgid/elixir-lang-talk/90e0e96e-a6ca-4111-b4cc-e9d180b99b6b%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- > You received this message because you are subscribed to the Google Groups > "elixir-lang-talk" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elixir-lang-talk/589094f3-2694-4b15-9d39-03d8e4869682%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-talk/589094f3-2694-4b15-9d39-03d8e4869682%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "elixir-lang-talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-talk/CAGnRm4JPqKpVWj2x_2ee1krX2s%2B3P9uOs980_M%3D855PjOS_CZg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
