CFWheels - вычисляемое свойство генерирует ошибку столбца в запросе

Хорошо, теперь это действительно смущает меня, потому что некоторое время назад у меня это работало, и что-то изменилось, из-за чего мои вычисленные свойства не работали.

У меня есть "page" контроллер, который выполняет findAll() по модели "link". Это прекрасно работает, за исключением случаев, когда я пытаюсь включить вычисляемое свойство (которое раньше работало).

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' в 'списке полей'

Хорошо, я подумал, давайте удалим имена столбцов из SELECT в findAll() и посмотрим, решит ли это это. Нету:

столбец [LINKUPVOTECOUNT] не найден в запросе, столбцами являются [linkID,linkTitle,linkPoints,linkAuthority,linkCreated,userID,userName,categoryID,categoryTitle,categoryToken]

Так что это похоже на ситуацию с уловкой. Это почти так, как будто моя модель "ссылки" полностью игнорирует свойства, установленные там.

Буду признателен за любые отзывы о том, где я иду не так (я уверен, что это я!).

Большое спасибо, Майкл.

2 ответа

Решение

Похоже, это ошибка с колесами. Я предлагаю подать вопрос.

Я не знаком с вашей структурой, но попробуйте это:

<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.

Другие вопросы по тегам