CFWheels嵌套属性和hasManyCheckBox

时间:2012-02-01 16:16:51

标签: coldfusion cfwheels nested-properties

我试图找出如何使用多个事件更新petevents表。我没有错误,但它也没有更新/插入。以下是相关的代码片段以及相关表格的架构。

查看

<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属性“when”更改为仅创建。然后我保存并得到了这个错误。 “关键'PRIMARY'重复输入'1025-1025'”

谢谢,

德里克

1 个答案:

答案 0 :(得分: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>