1

我想弄清楚如何用几个事件更新 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")>

宠物事件模型

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

在控制器中查看更新

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

与相关表有关的架构

编辑:我将 validatesPresenceOf 属性“when”更改为仅 oncreate。然后我保存并收到此错误。“键 'PRIMARY' 的重复条目 '1025-1025'”

谢谢,

德里克

4

1 回答 1

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>
于 2012-03-22T12:43:28.353 回答