2010-06-22 75 views
1

這工作與MySQL後端麻煩ColdFusion的聯合查詢在CFC與MySQL數據庫

在形式......

<cfselect name="to" size="1" bind="cfc:cfcs.messages.getOrganisations()" bindonload="yes" value="organisationID" display="organisationName" required="Yes"> 
    </cfselect> 
在CFC

<cffunction access="remote" name="getOrganisations" output="false" returntype="query" displayname="Get organisations list" hint="This method returns a list of organisations as a query."> 
    <cfquery name="getOrganisations" datasource='myData'> 

    SELECT organisationID, organisationName, acceptsReferral, metadataTemplate 
    FROM organisations 
    WHERE acceptsReferral 
    ORDER BY organisationName ASC; 

    </cfquery> 
    <cfreturn getOrganisations> 
</cffunction> 

但如果我嘗試

<cffunction access="remote" name="getOrganisations" output="false" returntype="query" displayname="Get organisations list" hint="This method returns a list of organisations as a query."> 
    <cfquery name="getOrganisations" datasource='myData'> 
    SELECT '0' AS organisationID, 'Select' AS organisationName, false AS acceptsReferral, 0 AS metadataTemplate 
    FROM organisations 
    UNION 
    (SELECT organisationID, organisationName, acceptsReferral, metadataTemplate 
    FROM organisations 
    WHERE acceptsReferral 
    ORDER BY organisationName ASC) 

    </cfquery> 
    <cfreturn getOrganisations> 
</cffunction> 

嘗試獲得sele ct引導行到查詢,我在firebug「JSON序列化失敗:無法將二進制數據序列化到JSON」中得到此AJAX錯誤。

亨利的建議解決了上述問題,但我再次受到下一點的影響,試圖讓兩個選擇鏈接。

這工作...

<cfselect name="attentionOf" size="1" bind="cfc:cfcs.messages.getOrganisationMembers({to})" bindonload="false" value="userID" display="name" required="No" queryPosition="below"> 
<option value="0">Select</option> 
</cfselect> 

...但如果我嘗試在DSN通過與綁定字段我得到「錯誤解析綁定」從這個

<cfselect name="attentionOf" size="1" bind="cfc:cfcs.messages.getOrganisationMembers({to}, 'mySqlData')" bindonload="false" value="userID" display="name" required="No" queryPosition="below"> 
    <option value="0">Select</option> 
</cfselect> 
+0

如果你在本地調用它,cfquery是否可以工作?附:不要忘記改變你的「getOrganisations」變量。 – Henry 2010-06-22 23:42:54

+0

是的,如果我在本地調用,它列出了查詢的頂部選擇,但沒有ORDER BY爲兩個查詢中的第二個。所以SQL沒有發生錯誤。我不明白JSON錯誤。 – Saul 2010-06-23 00:30:27

回答

1

哦,我想這是你想要的。

<cfset organisations = createObject("component", "cfcs.messages").getOrganisations()> 

<cfselect name="to" query="organisations" 
      value="organisationID" display="organisationName" 
      required="Yes" queryPosition="below"> 
    <option value="0">Select</option> 
</cfselect> 

如果你真的需要用它來綁定工作, 嘗試如果queryPosition屬性適用。如果queryPosition不適用於bind,那麼您需要插入額外的虛擬行。它可能更容易使用工會查詢查詢

+0

這樣做,亨利很好。我已經添加了我的連續數據綁定到OP – Saul 2010-06-23 21:25:07

+0

爲什麼你需要通過DSN?沒有意義。 DSN通常應該在您的應用程序範圍內。如果您確實需要傳遞一個變量,請嘗試在JS中設置DSN ='mySqlData',然後在綁定表達式中放入DSN w/o引號並嘗試? – Henry 2010-06-23 21:32:33

+0

嗯,爲了避免任何依賴,我正在將DSN傳遞給CFC,因爲您可以告訴我對CFC有點新鮮感,但認爲最好不要在CFC中擁有任何應用程序或會話變量? 我會將它作爲一個不帶引號的變量來使用 – Saul 2010-06-24 09:03:22