Запрос модели Ecto для возврата связанных объектов через отображение один в один - PullRequest
0 голосов
/ 10 июня 2019

Мне трудно найти в документации, как выполнить следующий Ecto-запрос.У меня есть модель events, которая имеет однозначное сопоставление с customer через event.customer_id.

В существующем конвейере запросов я запрашиваю events и возвращаю events, которые имеюттолько для отдельного клиента:

  defp events_by_distinct_customer(query) do
    query
    |> distinct([e], e.customer_id)
  end

В дополнение к этому мне нужно вернуть связанные с клиентом объекты вместо событий.Как мне это сделать, и каков метод / описание того, что я прошу сделать?

1 Ответ

0 голосов
/ 10 июня 2019

Возможно, вы захотите сделать простое inner join для таблиц клиента.

query
|> distinct([e], e.customer_id)
|> join(:inner, [e], c in Customers, on: e.customer_id == c.id)
|> select([e, c], c)

Внутреннее объединение возвращает только те строки, у которых есть обе стороны объединения, затем с помощью select/3 вы можете извлечь изрезультат задает только заказчик.

...