das mit xdebug ist einfach nur genial, da hätte ich mich schon viel früher mit beschäftigen sollen.
Ich arbeite mich jetzt mal an das Collection->link() Problem heran, erste Erkenntnisse möchte ich hier mal dokumentieren, falls das mal wer anderes auch machen möchte.
Ich habe das mit den Frontend Usern, Gruppen und der Gruppenzuordnung mal ausprobiert und hier etwas funktionierender Code:
Code: Alles auswählen
$feGrMeColl = new cApiFrontendGroupMemberCollection();
$feGrMeColl->link('cApiFrontendGroupCollection');
$feGrMeColl->link('cApiFrontendUserCollection');
$feGrMeColl->addResultField('capifrontendusercollection.username'); // Das ist für jedes Feld, das geladen werden soll, außer den IDs, notwendig
$feGrMeColl->addResultField('cApiFrontendGroupCollection.groupname');
$feGrMeColl->setWhere('capifrontendusercollection.idclient', $client);
$feGrMeColl->query(); // Hier kann man mit xdebug das SQL Statement abgreifen
$fields['idfrontenduser'] = 'idfrontenduser';
$fields['idfrontendgroup'] = 'idfrontendgroup';
$fields['username'] = 'username';
$fields['groupname'] = 'groupname';
$table = $feGrMeColl->fetchTable($fields);
foreach ($table as $key => $item) {
echo "idfrontenduser: ".$item['idfrontenduser']."<br>";
echo "username: ".$item['username']."<br>";
echo "idfrontendgroup: ".$item['idfrontendgroup']."<br>";
echo "groupname: ".$item['groupname']."<br>";
}
Code: Alles auswählen
idfrontenduser: 1
username: Mustermann
idfrontendgroup : 1
groupname: Mustergruppe
Code: Alles auswählen
SELECT capifrontendusercollection.idfrontenduser, capifrontendgroupcollection.idfrontendgroup, capifrontendgroupmembercollection.idfrontendgroupmember, capifrontendusercollection.username, capifrontendgroupcollection.groupname
FROM `con_frontendgroupmembers` AS capifrontendgroupmembercollection
LEFT JOIN con_frontendusers AS capifrontendusercollection ON capifrontendgroupmembercollection.idfrontenduser = capifrontendusercollection.idfrontenduser
LEFT JOIN con_frontendgroups AS capifrontendgroupcollection ON capifrontendgroupmembercollection.idfrontendgroup = capifrontendgroupcollection.idfrontendgroup
WHERE capifrontendusercollection.idclient = '1'"
Code: Alles auswählen
while (($item = $feGrMeColl->next()) !== false) // Das funktioniert nicht
Soweit erst mal ein Erfolg, jetzt mache ich mich an meine eigene Klasse, die macht mit query() Probleme...
Stephan