2012-02-01 118 views
1

我想弄清楚如何更新petevents表與幾個事件。我沒有錯誤,但它也沒有更新/插入。以下是相關的代碼片段,以及相關表格的模式。CFWheels嵌套屬性和hasManyCheckBox

查看

<cfloop query="events"> 

#hasManyCheckBox(objectName="pet", 

association="petevents", 

keys="#pet.key()#,#events.id#", 

label=events.eventname)# 

</cfloop> 

寵物模式

<cfset hasMany(name="petEvents", dependent="deleteAll", shortcut="events")> 
<!--- nested properties ---> 
<cfset nestedProperties(associations="petEvents", allowDelete=true)> 

事件模型

<cfset hasMany(name="petevents", dependent="deleteAll")> 

PetEvent型號

<cfset belongsTo("pet")>  
<cfset belongsTo(name="event", joinType="outer")> 

在控制器查看更新

<cfset pet = model("pet").findByKey(key=params.key)> 
<cfset pet.update(params.pet)> 

Schema pertaining to relevant tables

編輯:我改變validatesPresenceOf財產 「時,」 只有在OnCreate。然後我保存並得到這個錯誤。 「重複條目 '1025年至1025年' 重點 '主要'」

感謝,

德里克

回答

1

在你的控制,不要忘了包括petEvents

<cfset pet = model("pet").findByKey(key=params.key, include="petEvents")> 

編輯:

爲了迴應您的轉儲,您可以告訴我您在更新操作中執行此操作時獲得的結果嗎?

<cfset pet = model("pet").findByKey(key=params.key, include="petEvents")> 
<cfset pet.setProperties(params.pet)> 
<cfdump var="#pet#" abort> 

如果這看起來很好,當你這樣做時會發生什麼?任何錯誤?

<cfset pet = model("pet").findByKey(key=params.key, include="petEvents")> 
<cfset pet.setProperties(params.pet)> 
<cfset pet.update()> 
<cfdump var="#pet.allErrors()#"> 
<cfloop array="#pet.petEvents#" index="petEvent"> 
    <cfdump var="#petEvent.allErrors()#"> 
<cfloop> 
<cfabort> 
+0

我真的希望這會奏效,但唉,它並沒有保存我的複選框。 – dbinott 2012-03-28 15:53:15

+0

以下是試圖更新 時參數的轉儲![CF轉儲](http://i369.photobucket.com/albums/oo140/dbinnc/3-28-201211-33-18AM.png) – dbinott 2012-03-28 16:35:47

+0

請參閱我的問題在上面的編輯。 – 2012-03-29 11:52:17