CFWheels Вложенные свойства и hasManyCheckBox
Я пытаюсь выяснить, как я могу обновить таблицу 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 "когда" только для создания. Затем я сохранил и получил эту ошибку. "Дублирующая запись" 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>