多对多关系cfwheels内连接

时间:2012-04-04 09:31:49

标签: coldfusion relationship cfc cfwheels

我对cfwheels有一些问题(n:m relationsship)

这里是我的数据库架构

rights        righthaspath           path        
-id -------|  -id                --> -id
-role      -->-rightid (FK)      |   -url
              -pathid  (FK)------|

我的模特 /Models/Right.cfc

<cffunction name="init">
    <cfset hasMany(name="righthaspath",shortcut="path")>
    <cfset nestedProperties(associations="righthaspath")>   
</cffunction>

/Models/Path.cfc

<cffunction name="init">
    <cfset hasMany(name="righthaspath")>
</cffunction>

/Models/Righthaspath.cfc

<cffunction name="init">
    <cfset belongsTo("path")>
    <cfset belongsTo("right")>
</cffunction>

在我的控制器中

<cfset tmp= model("right").findall(include="righthaspath")>

所以,cfhweels的sql语句是:

SELECT rights.id,rights.Role,righthaspaths.id AS righthaspathid,righthaspaths.pathID,righthaspaths.rightID FROM rights 
LEFT OUTER JOIN righthaspaths ON rights.id = righthaspaths.rightID 

但我希望在这三个表上使用sql语句

SELECT 
    *
FROM 
    rights 
    INNER JOIN righthaspaths on rights.id=righthaspaths.rightID
    INNER JOIN paths on righthaspaths.pathID=paths.id
你帮忙吗?

PS:我不能包括路径,例如

<cfset tmp= model("right").findall(include="righthaspath,path")> 

因为我收到了错误

An association named path could not be found on the right model.

1 个答案:

答案 0 :(得分:0)

代表上面的Hans Maeier,我会发布他的答案,以便将其标记为已回答,并在stackoverflow上帮助CFWheels社区。

  

include =“righthaspath(path)”将完成

希望有助于任何人搜索此内容。

谢谢, 迈克尔。