2

わかりました、これは今私を本当に混乱させています。これはしばらく前に機能していたのですが、何かが変更されたため、計算されたプロパティが機能しなくなったからです。

「リンク」モデルで findAll() を実行する「ページ」コントローラーがあります。これは、計算されたプロパティ (以前は機能していた) を含めようとする場合を除いて、うまく機能します。

page.cfc (コントローラー)

<cfset linkListHottest = model("link").findAll(

            select="

                links.linkID,
                linkTitle,
                linkPoints,
                linkAuthority,
                linkCreated,
<!--- Here I specifiy the 'property' names from the model --->
                linkUpVoteCount,
                linkDownVoteCount,
                linkCommentCount,

                users.userID,
                userName,

                categories.categoryID,
                categoryTitle,
                categoryToken",

            include="user,category", 
            order="linkPoints DESC",
            handle="linkListHottestPaging",

            page=params.page,
            perPage=5

        ) />

link.cfc (モデル)

<cffunction name="init">

        <cfset table("links") />

<!--- These three lines aren't populating my queries on the link model --->
        <cfset property(name="linkUpVoteCount", sql="(SELECT COUNT(*) FROM votes WHERE votes.linkID = links.linkID AND voteType = 1)") />
        <cfset property(name="linkDownVoteCount", sql="(SELECT COUNT(*) FROM votes WHERE votes.linkID = links.linkID AND voteType = 0)") />
        <cfset property(name="linkCommentCount", sql="(SELECT COUNT(*) FROM comments WHERE comments.linkID = links.linkID AND commentRemoved = 0)") />

        <cfset belongsTo(name="user", modelName="user", joinType="outer", foreignKey="userID") />
        <cfset belongsTo(name="category", modelName="category", joinType="outer", foreignKey="categoryID") />

        <cfset hasMany(name="vote", modelName="vote", joinType="outer", foreignKey="linkID") />
        <cfset hasMany(name="comment", modelName="comment", joinType="outer", foreignKey="linkID") />   

        <cfset validatesPresenceOf(property='linkTitle') />
        <cfset validatesPresenceOf(property='linkURL') />
        <cfset validate(property='linkURL', method='isValidURL') />
        <cfset validate(property='linkURL', method="validateUniqueUrl", when="onCreate") />

    </cffunction>

home.cfm (ビュー)

#linkListHottest.linkUpVoteCount#

次のエラーが表示されます。

「フィールド リスト」の不明な列「linkUpVoteCount」

さて、findAll() の SELECT から列名を削除して、それが解決するかどうか見てみましょう。いいえ:

列 [LINKUPVOTECOUNT] がクエリに見つかりません。列は [linkID,linkTitle,linkPoints,linkAuthority,linkCreated,userID,userName,categoryID,categoryTitle,categoryToken] です

つまり、キャッチ 22 の状況のようです。私の「リンク」モデルは、そこに設定されているプロパティを完全に無視しているようです。

どこが間違っているかについてのフィードバックをいただければ幸いです (間違いなく私です!)。

どうもありがとう、マイケル。

4

2 に答える 2

2

これはWheelsのバグのように聞こえます。問題を提出することをお勧めします。

于 2012-08-09T15:55:14.340 に答える
-1

私はあなたのフレームワークに精通していませんが、これを試してください:

<cfset property(name="linkUpVoteCount", sql="(SELECT COUNT(*) FROM votes WHERE votes.linkID = links.linkID AND voteType = 1) as linkUpVoteCount") />

エイリアスas linkUpVoteCountを sql サブクエリの外に置きます。

また/><cfset>'s. html5 フィート。

于 2012-08-09T14:27:57.303 に答える