我试图找出如何使用多个事件更新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)>
编辑:我将validatesPresenceOf属性“when”更改为仅创建。然后我保存并得到了这个错误。 “关键'PRIMARY'重复输入'1025-1025'”
谢谢,
德里克
答案 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>