2012-02-01 86 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