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")>

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" を 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 に答える