使用原始 SQL 时是否可以使用 JOIN 子句?如果是这样,由于涉及至少 2 个模型,我应该如何映射结果?
问问题
408 次
1 回答
0
您可以使用数据库提供的任何子句。运行非标准查询时,使用 method Model.findBySQL(...)
。
但是,在使用之前,请阅读其文档:
具体来说,这个:
确保查询返回与此模型关联的所有列,以便生成的模型可以正确地进行水合。不属于此模型的返回列将被忽略,但可用于上述子句。
换句话说,无论您执行什么查询,它返回的列都应该与该模型的列相匹配。从技术上讲,您的查询可以跨越多个表、视图,甚至执行自定义函数,但结果集需要具有与此模型匹配的列。这是为什么?因为您的模型在 ORM 中是“O”。换句话说,它将表中的单个记录表示为对象。
如果您的结果是多个模型、部分模型或介于两者之间的任何模型的混合,请不要使用模型 API。使用基地:
List<Map> results = Base.findAll("complex custom query");
查看变体find(...)
和findAll(...)
方法
于 2017-12-06T22:23:50.003 回答