CFWheels - 计算属性在查询中生成列错误

时间:2012-08-03 23:12:27

标签: sql coldfusion railo cfwheels

好的,所以现在这让我感到困惑,因为我有一段时间后工作了,而且有些事情发生了变化,导致我的计算属性不起作用。

我有一个“页面”控制器,它在“链接”模型上执行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,用户ID,用户名,的categoryID,categoryTitle,categoryToken]

所以这似乎是一个陷阱22的情况。这几乎就像我的“链接”模型忽略了完全设置的属性。

我很感激有关我出错的地方的任何反馈(我确定是我!)。

非常感谢, 迈克尔。

2 个答案:

答案 0 :(得分:2)

听起来这是车轮的一个错误。我建议提交一个问题。

答案 1 :(得分:-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 ftw。