我假设这是因为我在防御中指定了实体字段。因此,我想知道,是否可以覆盖中指定的实体字段defentity
?
我认为您的假设是正确的,也可以覆盖它。如果您查看由(defentity foo)
它生成的地图,则其中:fields
包含所有字段的键。korma.core/entity-fields
不会取代已经存在的东西,但这将:
(-> foo
(assoc :fields [:first])
(korma/select*)
(korma/as-sql))
=> "SELECT \"foo\".\"first\" FROM \"foo\""
我希望能够传递一个用户定义的字段数组,其中包含需要获取的所有列的列表。
(defn fetch [& fields]
(-> (korma/select* foo)
(as-> query
(if (seq fields)
(assoc query :fields fields)
query))
(korma/select)))
我在此示例中使用可变参数 args 进行镜像korma.core/entity-fields
(并fetch
返回 SQL 字符串以进行测试,而不是执行查询):
(fetch :first :last)
=> "SELECT \"foo\".\"first\", \"foo\".\"last\" FROM \"foo\""
(fetch)
=> "SELECT \"foo\".\"id\", \"foo\".\"first\", \"foo\".\"last\" FROM \"foo\""