31. 12. 2017, 15:04

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/typo3cms/CoreApiReference/ApiOverview/Typo3CoreEngine/Database/Index.html)
Man muss einfach den folgenden Code an entsprechender Stelle (z.b. einer Action) platzieren:
[code]$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();
[/code]

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.