Ich versuche Ecto.Adapters.SQL.query
zu verwenden, es funktioniert gut, aber nicht für Arrays. Zum Beispiel versagt diese Aussage:Wie verwende ich Ecto.Adapters.SQL.query mit Arrays?
Ecto.Adapters.SQL.query Repo, "SELECT p.* FROM posts p WHERE p.title in ($1)",
[["title1", "title2"]]
Der Fehler:
** (ArgumentError) Postgrex expected a binary that can be encoded/cast to
type "text", got ["title1", "title2"]. Please make sure the value you are
passing matches the definition in your table or in your query or convert
the value accordingly.
UPDATE
Es gibt keine einfache Möglichkeit, es zu tun, aber es ist keine Einschränkung von Ecto, es ist Einschränkung der SQL-Datenbanken/PostgreSQL, more details and workaround.
Es ist schwer, dass im Jahr 2016 SQL-Datenbanken noch so ein Grundzug Laking zu glauben ...
Danke, ja, es ist möglich, mit Query DSL zu tun, aber immer noch - die Möglichkeit, Raw SQL auszuführen, scheint ziemlich fundamental für die SQL-Bibliothek zu sein. Ich würde gerne die Antwort sehen - wie es geht. –
@AlexeyPetrushin aktualisiert die Antwort – JustMichael
Aber wie man das Ergebnis in die Ansicht rendern, dh wie man 'Ecto.Adapters.SQL.query (MyApp.Repo, ..' 'Wie übergibt man das Ergebnis an die Ansicht? Danke . –