Ich habe folgende eine kleine Extension zur Verwaltung von Benutzern und Gebäuden geschrieben:
tx_testsort_domain_model_gebaeude:
name
tx_testsort_domain_model_person:
name,
gebaeude
Wenn man diese Extension mit dem Extensionbuilder anlegt, kann man bereits Gebäude und Personen mit zugewiesenen Gebäuden anlegen.
In der mn-Tabelle 'tx_testsort_person_gebaeude_mm' werden die Verknüpfungen von Personen und Gebäuden gespeichert. Hier existiert auch ein Property 'sorting' - im Listen Modul kann man die Gebäude die einer Person zugewiesen sind sortieren.
Aber wie macht man das in einer eigenen Extension?
Leicht!!
(https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/DataHandler/Database/Index.html)
Man muss einfach den folgenden Code an entsprechender Stelle (z.b. einer Action) platzieren:
$data['tx_testsort_domain_model_person'][5] = [
'gebaeude' => '1,2,4'
];
$tce = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\DataHandling\\DataHandler');
$tce->start($data, []);
$tce->process_datamap();
Das würde der Person mit der UID 5 die Gebäude 1,2,4 (bzw. die UIDs der Gebäude) zuweisen.
Der String gibt auch gleich die Reihenfolge an.
Nicht existierende UIDs werden ignoriert, erzeugen also keinen Fehler.