Tabellenrelation

  • steini18778 steini187...
    Typ im Roten Hemd
    0 x
    2 Beiträge
    0 Hilfreiche Beiträge
    03. 08. 2010, 14:29

    Hallo liebe Typo3 Gemeinde,

    ich sitze nun schon eine ganze Weile an einem für mich seltsamen Problem. Ich habe eine Tabelle mit Autoren und eine Tabelle mit Institutionen. Dabei kann wird in der Autoren Tabelle die ID der Institution gespeichert.

    Mittels des Backendes kann ich problemlos alles anlegen und mittels des Wizards verknüpfen. Ich gehe also vorerst davon aus, das mein Model richtig ist (habs mit dem Kickstarter gebaut).

    Nun habe ich das Problem, das wenn ich über das Repository einen Autor anlegen will, die Institution nicht angelegt wird.

    Ich habe mir auch das schon das Blog Beispiel angesehen und die Relation zwischen Post und Author ist eigentlich identisch, wobei der Post meinem Autor entspricht.

    Folgendender Code sollte eine Institution anlegen.

    1. $author = new Tx_Tanmarkongress_Domain_Model_Author();
    2. $author->setName('Name');
    3. $author->setMail('maol@google.de');
    4.  
    5. $institution = new Tx_Tanmarkongress_Domain_Model_Institution();
    6. $institution->setName('HU Berlin');
    7. $institution->setDescription('Test');
    8.  
    9. $author->setInstitutions($institution);
    10.  
    11. $authorRepository = t3lib_div::makeInstance('Tx_Tanmarkongress_Domain_Repository_AuthorRepository');
    12. $authorRepository->add($author);


  • 1
  • steini18778 steini187...
    Typ im Roten Hemd
    0 x
    2 Beiträge
    0 Hilfreiche Beiträge
    03. 08. 2010, 14:46

    Einzeln angelegt würde es funktionieren, nur das ich über "set" nicht beide gleichzeitig anlegen kann.

    Hier mal beide Modelle

    1. class Tx_Tanmarkongress_Domain_Model_Author extends Tx_Extbase_DomainObject_AbstractValueObject {
    2.  
    3. /**
    4. * Name des Authors
    5. * @var string
    6. */
    7. protected $name;
    8.  
    9. /**
    10. * E-Mail Adresse des Authors
    11. * @var string
    12. */
    13. protected $mail;
    14.  
    15. /**
    16. * @var Tx_Tanmarkongress_Domain_Model_Institution
    17. */
    18. protected $institutions;
    19.  
    20. /**
    21. * Setter for Name
    22. *
    23. * @param string $Name Name des Authors
    24. * @return void
    25. */
    26. public function setName($Name) {
    27. $this->name = $Name;
    28. }
    29.  
    30. /**
    31. * Getter for Name
    32. *
    33. * @return string Name des Authors
    34. */
    35. public function getName() {
    36. return $this->name;
    37. }
    38.  
    39. /**
    40. * Setter for Mail
    41. *
    42. * @param string $Mail E-Mail Adresse des Authors
    43. * @return void
    44. */
    45. public function setMail($Mail) {
    46. $this->mail = $Mail;
    47. }
    48.  
    49. /**
    50. * Getter for Mail
    51. *
    52. * @return string E-Mail Adresse des Authors
    53. */
    54. public function getMail() {
    55. return $this->mail;
    56. }
    57.  
    58. /**
    59. * Setter for Institutions
    60. *
    61. * @param Tx_Tanmarkongress_Domain_Model_Institution $Institutions
    62. * @return void
    63. */
    64. public function setInstitutions(Tx_Tanmarkongress_Domain_Model_Institution $Institutions) {
    65. $this->institutions = $Institutions;
    66. }
    67.  
    68. /**
    69. * Getter for Institutions
    70. *
    71. * @return Institutions
    72. */
    73. public function getInstitutions() {
    74. return $this->institutions;
    75. }
    76. }

    1. class Tx_Tanmarkongress_Domain_Model_Institution extends Tx_Extbase_DomainObject_AbstractEntity {
    2.  
    3. /**
    4. * Name der Institution
    5. * @var string
    6. */
    7. protected $name;
    8.  
    9. /**
    10. * Kurzbeschreibung der Institution
    11. * @var string
    12. */
    13. protected $description;
    14.  
    15. /**
    16. * Setter for Name
    17. *
    18. * @param string $Name Name der Institution
    19. * @return void
    20. */
    21. public function setName($Name) {
    22. $this->name = $Name;
    23. }
    24.  
    25. /**
    26. * Getter for Name
    27. *
    28. * @return string Name der Institution
    29. */
    30. public function getName() {
    31. return $this->name;
    32. }
    33.  
    34. /**
    35. * Setter for description
    36. *
    37. * @param string $description Kurzbeschreibung der Institution
    38. * @return void
    39. */
    40. public function setDescription($description) {
    41. $this->description = $description;
    42. }
    43.  
    44. /**
    45. * Getter for description
    46. *
    47. * @return string Kurzbeschreibung der Institution
    48. */
    49. public function getDescription() {
    50. return $this->description;
    51. }
    52.  
    53. }

  • super-mario super-mar...
    Padawan
    0 x
    46 Beiträge
    0 Hilfreiche Beiträge
    16. 08. 2010, 15:01

    1. $author = new Tx_Tanmarkongress_Domain_Model_Author();
    2. $author->setName('Name');
    3. $author->setMail('maol@google.de');
    4.  
    5. $institution = new Tx_Tanmarkongress_Domain_Model_Institution();
    6. $institution->setName('HU Berlin');
    7. $institution->setDescription('Test');
    8.  
    9. // hier sollte erst die institution hinzugefügt werden, oder?
    10. $institutionRepository = t3lib_div::makeInstance('Tx_Tanmarkongress_Domain_Repository_Institution');
    11. $institutionRepository->add($institution);
    12.  
    13. //vlt. noch ne save methode aufrufen?
    14. //
    15.  
    16.  
    17. $author->setInstitutions($institution);
    18.  
    19. $authorRepository = t3lib_div::makeInstance('Tx_Tanmarkongress_Domain_Repository_AuthorRepository');
    20. $authorRepository->add($author);

    sollte doch eher so aussehen oder?

  • 1