I have this piece of code in my decorator, which is mostly copy-paste from FormScaffolder to add a field for the many_many attribute Contacts.
public function updateCMSFields(FieldSet &$fields) {
$component = 'Contact';
$relationship = 'Contacts';
$relationshipFields = $this->getRelationshipFields();
$filterWhere = $this->owner->getManyManyFilter($relationship, $component);
$filterJoin = $this->owner->getManyManyJoin($relationship, $component);
$dom = new DataObjectManager($this->owner,
$relationship,
$component,
$relationshipFields,
"getCMSFields_forPopup",
$filterWhere,
'',
$filterJoin
);
$tab = $fields->findOrMakeTab('Root.Main.Contacts',
singleton($component)->i18n_plural_name());
$tab->push($dom);
}
Existing contacts show up in the field as expected. But if I add a new contact, the contact it is saved in the Contact table, as expected, but the relation is not saved in the relationship table. If I replace DataObjectManager with ComplexTableField it works as it should.