Я пытаюсь использовать Ecto.Adapters.SQL.query
, он отлично работает, но не для массивов. Например, это утверждение не удается:Как использовать Ecto.Adapters.SQL.query с массивами?
Ecto.Adapters.SQL.query Repo, "SELECT p.* FROM posts p WHERE p.title in ($1)",
[["title1", "title2"]]
Ошибка:
** (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
Там нет простого способа сделать это, но это не является ограничение Ecto, это ограничение баз данных SQL/PostgreSQL, more details and workaround.
Это трудно поверить, что в 2016 году базы данных SQL по-прежнему лакообразование такую основную функцию ...
Спасибо, да, возможно, это связано с Query DSL, но тем не менее - возможность выполнения необработанного SQL, по-видимому, имеет фундаментальное значение для библиотеки SQL. Я бы хотел увидеть ответ - как это сделать. –
@AlexeyPetrushin обновил ответ – JustMichael
Но как визуализировать результат в представлении, то есть как использовать 'Ecto.Adapters.SQL.query (MyApp.Repo, ..'? Как передать результат на просмотр? , –