lima-city: Webhosting, Domains und Cloud
0 Pluspunkte 0 Minuspunkte

Wenn ich diesen Ecto Query versuche auszuführen

query =
      from ur in UserResponsibility,
        join: u in User,
        on: ur.user_id == u.id,
        where: ur.section == ^section,
        and: u.ob_editor == true,
        select: u

    Repo.all(query)

bekomme ich als Antwort

** (Ecto.Query.CompileError) unsupported :and in keyword query expression
    (ecto 3.11.2) expanding macro: Ecto.Query.from/2

Wieso?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

In einem from Query kannst du Bedingungen nicht mit and: trennen. Im Keyword-Stil (from ...) darf es nur ein where: geben. Mehrere Bedingungen musst du innerhalb dieses where kombinieren.

query =
  from ur in UserResponsibility,
    join: u in User,
    on: ur.user_id == u.id,
    where: ur.section == ^section and u.ob_editor == true,
    select: u

Repo.all(query)

Alternativ kannst du auch mehrere where Aufrufe in einem Pipe Stil zusammenhängen.

UserResponsibility
|> join(:inner, [ur], u in User, on: ur.user_id == u.id)
|> where([ur], ur.section == ^section)
|> where([_ur, u], u.ob_editor == true)
|> select([_ur, u], u)
|> Repo.all()
von (660 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2.5k Fragen

2.9k Antworten

278 Kommentare

13 Nutzer