2017-07-25 1 views
0

Ich bin neu in TYPO3, ich habe nicht viel Erfahrung. Ich arbeite mit der offiziellen Dokumentation. TYPO3 Version 7.6 LTS.TYPO3 IRRE 1: n löschen untergeordnete Datensätze funktioniert nicht

Ich habe 1: n-Beziehung erstellt. Fast alles funktioniert gut, Kinderartikel werden problemlos gespeichert und geladen. Ich habe jedoch ein Problem mit dem Löschen. Wenn ich die Eltern-Entität lösche, werden ihre Kinder nicht entfernt, was ein echter Schmerz ist.

Hier ist meine TCA-Konfiguration für beide Tabellen (ich habe irrelevant Spalten entfernt):

tx_myext_domain_model_item Elterntabelle:


<?php 

$ll = 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:'; 

return [ 
    'ctrl' => [ 
     'title' => $ll . 'basket.item', 
     'label' => 'title', 
     'tstamp' => 'updated_at', 
     'crdate' => 'created_at', 
     'cruser_id' => 'user_id' 
    ], 
    'interface' => [ 
     'showRecordFieldList' => '' 
    ], 
    'columns' => [ 
     'pid' => [ 
      'label' => $ll . 'pid', 
      'config' => [ 
       'type' => 'passthrough', 
      ] 
     ], 
     // ... 
     'documents' => [ 
      'label' => $ll . 'item.documents', 
      'config' => [ 
       'readOnly' => 1, 
       'type' => 'inline', 
       'foreign_table' => 'tx_myext_domain_model_document', 
       'foreign_field' => 'item_id', 
       'behaviour' => [ 
        'enableCascadingDelete' => 1, 
       ] 
      ], 
     ] 
    ] 
]; 

tx_myext_domain_model_document Kind Tabelle:


<?php 

$ll = 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:'; 

return [ 
    'ctrl' => [ 
     'title' => $ll . 'document', 
     'label' => 'item_id', 
     'tstamp' => 'updated_at', 
     'crdate' => 'created_at', 
    ], 
    'interface' => [ 
     'showRecordFieldList' => '' 
    ], 
    'columns' => [ 
     'pid' => [ 
      'label' => $ll . 'pid', 
      'config' => [ 
       'type' => 'passthrough', 
      ] 
     ],  
     // ... 
     'item_id' => [ 
      'label' => $ll . 'item.id', 
      'config' => [ 
       'type' => 'input', 
       'size' => '10', 
       'eval' => 'int', 
      ], 
     ], 
    ], 
]; 

jemand eine Idee hat was mache ich falsch?

Vielen Dank für Hilfe im Voraus.

Antwort

1

Sie haben die TCA erzählt wird das Feld ‚ITEM_ID‘ sehen für die Beziehung

'foreign_field' => 'item_id', 

aber dieses Feld für die ID des Elements verwendet. In diesem Feld sollte typo3 die uid vom übergeordneten Element speichern. Versuchen Sie, das Feld 'item_id' auf Passthrough zu setzen, und erstellen Sie ein neues Element, und checken Sie den DB ein, wenn in dem Feld die UID vom übergeordneten Element gespeichert ist. Wenn dies der Fall ist, sollte cascadeDelete funktionieren. enableCascadingDelete ist standardmäßig auf :)

edit:
, wenn Sie das Zeug in Ihrem Code zu tun, und Sie verwenden extbase repositorys die Objekte, die Sie auf die Eigenschaft Dokumente in Ihrem Artikel Modell @cascade entfernen hinzufügen müssen, um zu löschen. Wird in der Dokumentation beschrieben unter:

https://docs.typo3.org/typo3cms/ExtbaseFluidBook/5-Domain/2-implementing-the-domain-model.html#implementing-relationships-between-domain-objects

+0

Die Sache ist, dass die Dokumente, um Elemente nur durch den Code hinzufügen. Ich kann sehen, dass das Feld 'Dokumente' aus dem übergeordneten Tabellenzähler sich korrekt verhält. Ich möchte nicht, dass dies über das Admin-Panel bearbeitbar ist. – Ventus

+0

Wenn Sie extbase-Repositorys verwenden, um die Objekte in Ihrem Code zu löschen, müssen Sie @cascade remove zu den Eigenschaftendokumenten in Ihrem Objektmodell hinzufügen. Ist sie in der Dokumentation beschrieben: https://docs.typo3.org/typo3cms/ExtbaseFluidBook/5-Domain/2-implementing-the-domain-model.html – Xippo

+0

Ja! Danke @Xippo! Ich habe die '@ cascade' Annotation verpasst! Ich weiß nicht, wie ich es verpasst habe. Bitte aktualisieren Sie Ihre Frage mit diesem Vorschlag und ich werde es akzeptieren :) – Ventus

Verwandte Themen