
<?xml version="1.0" encoding="UTF-8"?>
<model package="newsletters" baseClass="xPDOObject" platform="mysql" defaultEngine="InnoDB" phpdoc-package="newsletters" phpdoc-subpackage="">
<object class="Newsletter" table="newsletters" extends="xPDOSimpleObject">
<field key="title" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
<field key="document" dbtype="int" precision="10" phptype="integer" null="false" default="0" />
</object>
<object class="Subscriber" table="newsletters_subscribers" extends="xPDOSimpleObject">
<composite alias="GroupSubscribers" class="GroupSubscribers" local="id" foreign="group" cardinality="many" owner="local" />
<field key="name" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
<field key="email" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
<field key="code" dbtype="varchar" precision="32" phptype="string" null="false" default="" />
<field key="active" dbtype="int" precision="1" phptype="integer" null="false" default="0" />
</object>
<object class="Group" table="newsletters_groups" extends="xPDOSimpleObject">
<composite alias="GroupSubscribers" class="GroupSubscribers" local="id" foreign="subscriber" cardinality="many" owner="local" />
<field key="name" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
</object>
<object class="GroupSubscribers" table="newsletters_groups_subscribers" extends="xPDOSimpleObject">
<field key="subscriber" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" index="index" />
<field key="group" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" index="index" />
<aggregate alias="Subscriber" class="Subscriber" local="subscriber" foreign="id" cardinality="one" owner="foreign" />
<aggregate alias="Group" class="Group" local="group" foreign="id" cardinality="one" owner="foreign" />
</object>
</model>
<?php
$modx->addPackage('newsletters', MODX_CORE_PATH.'/components/newsletters/assets/model/');
$group = $modx->newObject('Group');
$group->set('name', 'Nog maar een groep');
$subscribers = array();
for ($i=1;$i<10;$i++) {
$subscriber = $modx->newObject('Subscriber');
$subscriber->set('name', 'Subscriber '.$i);
$subscriber->set('email', 'subscriber'.$i.'@email.tld');
$subscribers[] = $subscribers;
}
$group->addMany($subscribers);
$group->save();
?>
$subscribers[] = $subscribers;
You are assigning the entire array to a new element in the array on each loop.

<?php
$subscribers[] = $subscriber;
?>
<?php $group->addMany($subscribers, 'GroupSubscribers'); ?>
<?xml version="1.0" encoding="UTF-8"?>
<model package="newsletters" baseClass="xPDOObject" platform="mysql" defaultEngine="InnoDB" phpdoc-package="newsletters" phpdoc-subpackage="">
<object class="Subscriber" table="newsletters_subscribers" extends="xPDOSimpleObject">
<composite class="GroupSubscribers" local="id" foreign="subscriber" cardinality="many" owner="local" />
<field key="name" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
<field key="email" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
<field key="code" dbtype="varchar" precision="32" phptype="string" null="false" default="" />
<field key="active" dbtype="int" precision="1" phptype="integer" null="false" default="0" />
</object>
<object class="Group" table="newsletters_groups" extends="xPDOSimpleObject">
<composite class="GroupSubscribers" local="id" foreign="group" cardinality="many" owner="local" />
<field key="name" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
</object>
<object class="GroupSubscribers" table="newsletters_groups_subscribers" extends="xPDOSimpleObject">
<field key="subscriber" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" index="index" />
<field key="group" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" index="index" />
<aggregate class="Subscriber" local="subscriber" foreign="id" cardinality="one" owner="foreign" />
<aggregate class="Group" local="group" foreign="id" cardinality="one" owner="foreign" />
</object>
</model>
<?php
$group = $modx->newObject('Group');
$group->set('name', 'Nog maar een groep');
$subscribers = array();
for ($i=1;$i<10;$i++) {
$subscriber = $modx->newObject('Subscriber');
$subscriber->set('name', 'Subscriber '.$i);
$subscriber->set('email', 'subscriber'.$i.'@email.tld');
$subscriber->set('code', 'code'.$i);
$subscriber->set('active', '0');
$subscribers[] = $subscriber;
}
$group->addMany($subscribers);
$group->save();
?>
I decided to try it the other way around (add groups to the subscriber). [b]Current schema:[/b]
<?xml version="1.0" encoding="UTF-8"?>
<model package="newsletters" baseClass="xPDOObject" platform="mysql" defaultEngine="InnoDB" phpdoc-package="newsletters" phpdoc-subpackage="">
<object class="nwNewsletter" table="newsletters" extends="xPDOSimpleObject">
<field key="title" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
<field key="document" dbtype="int" precision="10" phptype="integer" null="false" default="0" />
</object>
<object class="nwSubscriber" table="newsletters_subscribers" extends="xPDOSimpleObject">
<composite alias="Subscribers" class="nwGroupSubscribers" local="id" foreign="subscriber" cardinality="many" owner="local" />
<field key="name" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
<field key="email" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
<field key="code" dbtype="varchar" precision="32" phptype="string" null="false" default="" />
<field key="active" dbtype="int" precision="1" phptype="integer" null="false" default="0" />
</object>
<object class="nwGroup" table="newsletters_groups" extends="xPDOSimpleObject">
<composite alias="Groups" class="nwGroupSubscribers" local="id" foreign="group" cardinality="many" owner="local" />
<field key="name" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
</object>
<object class="nwGroupSubscribers" table="newsletters_groups_subscribers" extends="xPDOSimpleObject">
<aggregate alias="Subscriber" class="nwSubscriber" local="subscriber" foreign="id" cardinality="one" owner="foreign" />
<aggregate alias="Group" class="nwGroup" local="group" foreign="id" cardinality="one" owner="foreign" />
<field key="subscriber" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" index="index" />
<field key="group" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" index="index" />
</object>
</model>
<?php
$subscriber = $modx->newObject('nwSubscriber');
$subscriber->set('name', 'Subscriber');
$subscriber->set('email', '[email protected]');
$subscriber->set('code', 'codet54tg4353wtgw34q');
$subscriber->set('active', '0');
$groups = array();
for ($i=1;$i<10;$i++) {
$group = $modx->newObject('nwGroup');
$group->set('name', 'Group '.$i);
$groups[] = $group;
}
$subscriber->addMany($groups, 'Subscribers');
$subscriber->save();
?>