我目前正在将SQLKorma用于一个项目,但我遇到了一些障碍。
我用两个左连接构造了一个查询;其中一个包含一个数组,其中包含我希望在我的WHERE
子句中使用的条目。
这在 SQL 中表达起来很简单。请注意,这是一个主要经过编辑的查询。
SELECT
cu.name,
c.description,
c.created_at AT TIME ZONE 'utc'
FROM calendar_users cu LEFT JOIN calendars c ON cu.id = c.user_id
LEFT JOIN meetings m ON c.id = m.id
WHERE 'status_report' ILIKE ANY (m.meeting_metadata)
GROUP BY m.meeting_metadata, c.created_at, cu.name, cu.description
ORDER BY c.created_at DESC
关于的部分ILIKE ANY
是我希望能够翻译成 Korma 的部分。
我从文档中了解到该ANY
子句不支持该WHERE
子句,我应该考虑使用raw
orexec-raw
代替。
有了这个,我想将一个参数化的raw
字符串传递到WHERE
子句中来完成我想要做的事情。
这是我尝试过的,但它确实在 Postgres 中出现语法错误而失败:
(select calendars
(fields calendar-user-cols)
(join :calendar_users (= :calendars.user_id :calendar_users.id))
(join :meetings (= :calendars.id :meetings.id))
(where (raw ["? ILIKE ANY(meetings.meeting_metadata)" metadata])))
具体来说:
PSQLException:
Message: ERROR: syntax error at or near "["
Position: 1006
SQLState: 42601
Error Code: 0
我将如何使用 Korma 来解决这个问题?我必须求助于一个完整的exec-raw
查询吗?