|
Verfasst am: 26. 10. 2010 [15:48]
|
|
mmbln
Themenersteller
Dabei seit: 22.07.2010
Beiträge: 10
|
Hallo,
Ich habe eine Klasse mit einem Attribut "associations" vom Typ Tx_Extbase_Persistence_ObjectStorage<Tx_MmosUsermanagement_Domain_Model_Association>
Wenn ich einen Datensatz hinzufüge und eine Liste von Associations angegeben habe, werden diese auch gespiechert.
Will ich allerdings einen Datensatz bearbeiten und wähle keine Association aus einer Dropdown Liste aus, so werden die vorhandenen allerdings auch nicht gelöscht.
Hat jemand eine Idee, woran das liegen könnte?
Das Model sieht so aus:
Class Tx_MmosUsermanagement_Domain_Model_Member Extends Tx_Extbase_DomainObject_AbstractEntity {
/**
* The association memberships
* @var Tx_Extbase_Persistence_ObjectStorage<Tx_MmosUsermanagement_Domain_Model_Association>
* @cascade remove
*/
Protected $associations;
public Function __construct() {
$this -> associations = new Tx_Extbase_Persistence_ObjectStorage();
}
/**
* Add a association
*
* @param Tx_MmosUsermanagement_Domain_Model_Association $association
*/
public Function addAssociation(Tx_MmosUsermanagement_Domain_Model_Association $association) {
$this -> associations -> attach($association);
}
/**
*
* Gets all memberships.
* @return Tx_Extbase_Persistence_ObjectStorage<Tx_MmosUsermanagement_Domain_Model_Association>
*/
public Function getAssociations() { Return $this -> associations; }
/**
*
* remove all associations.
*/
public Function removeAllAssociations() {
$this -> associations = new Tx_Extbase_Persistence_ObjectStorage();
}
/**
* Setter for associations
*
* @param Tx_Extbase_Persistence_ObjectStorage $associations One or more Tx_MmosUsermanagement_Domain_Model_Association objects
* @return void
*/
public function setAssociations(Tx_Extbase_Persistence_ObjectStorage $associations) {
$this -> associations = $associations;
}
}
Die Beziehung zwischen Member und Assoziation ist als M:N eingerichtet.
Grüße Micha
|
|
Verfasst am: 28. 11. 2010 [16:38]
|
|
rlp_immigrant
Dabei seit: 21.10.2009
Beiträge: 40
|
mmbln schrieb:
Will ich allerdings einen Datensatz bearbeiten und wähle keine Association aus einer Dropdown Liste aus, so werden die vorhandenen allerdings auch nicht gelöscht.
Was soll hier gelöscht werden? Die Beziehung oder die Association?
Nutzt du Extbase oder Flow3? Wenn die Beziehung nicht gelöscht wird, würde ich bei Extbase mal die TCA Konfiguration prüfen. Extbase greift darauf zurück um die Tabellenbeziehungen zu erkennen.
Soll die ganze Association gelöscht, so musst du das dem Framework auch sagen. Ich würde die zulöschende Association noch mal extra an den View/Fluid, als Hiddenfeld, mitschicken.
In der update Aktion musst du dann prüfen ob die mitgeschickte Association gerade dem Member zugeordnet ist. Falls ja, und die Assocition nicht mehr im Selectfeld ist, dann musst du diese von Hand mitteld detach aus dem storageobject schmeißen.
Würde ich jetzt so machen....aber elegant ist es nicht....
Grüße
Alex
|