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