0

cfwheels (n:m 関係) にいくつか問題があります。

ここに私のデータベーススキーマ

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 

しかし、このような3つのテーブルに対する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.
4

1 に答える 1

0

上記の Hans Maeier に代わって、彼の回答を投稿して、回答済みとしてマークし、stackoverflow で CFWheels コミュニティを支援できるようにします。

include="righthaspath(path)" は動作します

これを探している人に役立つことを願っています。

ありがとう、マイケル。

于 2012-04-25T23:02:51.363 に答える