Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.


Our old forums are still available as a read-only archive.

Moderators: martimiz, Sean, biapar, Willr, Ingo, simon_w

Updating the data in a $has_one relationship inside the CMS


5 Posts   3374 Views


10 August 2008 at 5:44pm Community Member, 5 Posts

Hallo all,

Been bashing my head against this and other problems in SS for a while now, thought i'd ask the wider community.

In the linked code, (unnecessary .. i think.. bits excluded), the dropdown box gets the list of offices just fine, but it won't update when I click save. It says it all saves ok, but when i navigate away and back again, nothing has changed. What am I missing?

Investigating the generated code it seems like the <input> tags are fine. I'm stumped.


10 August 2008 at 6:16pm (Last edited: 10 August 2008 6:19pm), Core Development Team, 84 Posts

Your DropdownField should have 'myOfficeID' instead of 'myOffice', because that's whats generated at the database level :)

Also, I should mention that it's common practice to use UpperCamelCase for field names - so it would be something like MyOffice => Office in your $has_one array, and new DropdownField("MyOfficeID").



10 August 2008 at 6:20pm (Last edited: 10 August 2008 8:33pm), Forum Moderator, 5511 Posts

try change the DB field you point the drop down to from the has_one name to the actual field in the database eg change the new DropdownField() bit to

new DropdownField(

and see if that saves the data.

EDIT: matt pretty much posted the same thing just before me.


10 August 2008 at 6:40pm Community Member, 5 Posts

Thanks very much people,

Works a treat. Here's hoping that little gem of info will trickle down to the rest of my troubles.


10 August 2008 at 8:21pm (Last edited: 10 August 2008 8:22pm), Forum Moderator, 921 Posts

Even better, you can use TypeDropdown instead of DropdownField. This means you won't have to do a DataObject::get('Office') to return all the instances of the Office class, then transform that into an array map for the DropdownField source.


new TypeDropdown('MyOfficeID', 'Office', 'Office');