Hallo zusammen,
Meine Models Unit und Reservations haben eine 1:n Beziehung (unit->reservations).
Nun übergebe ich der create Action methode im ReservationController eine unit und eine neue Reservation und möchte diese mittels
$unit->addReservation($newReservation);
der Unit zuweisen.
Dabei erhalte ich folgenden Error:
Fatal error: Call to a member function attach() on a non-object
Im Unit Model wird die Relation wie folgt verwaltet:
/**
* __construct
*
* @return void
*/
public function __construct() {
//Do not remove the next line: It would break the functionality
$this->initStorageObjects();
}
/**
* Initializes all Tx_Extbase_Persistence_ObjectStorage properties.
*
* @return void
*/
protected function initStorageObjects() {
$this->reservations = new Tx_Extbase_Persistence_ObjectStorage();
}
/**
* Adds a Reservation
*
* @param Tx_AboUnitReservation_Domain_Model_Reservation $reservation
* @return void
*/
public function addReservation(Tx_AboUnitReservation_Domain_Model_Reservation $reservation) {
$this->reservations->attach($reservation);
}
Wenn ich nun die addReservation methode wie folgt ergänze:
public function addReservation(Tx_AboUnitReservation_Domain_Model_Reservation $reservation) {
if($this->reservations == null) {
$this->reservations = new Tx_Extbase_Persistence_ObjectStorage();
}
$this->reservations->attach($reservation);
}
Funktioniert es - aber ich verstehe nicht warum es mit dem ursprünglichen Code nicht funktioniert.
Wenn ich einen Breakpoint in der initStorageObjects() setze, kann ich sehen, dass die Methode vor dem Aufruf der create action ausgeführt wird.
Hat jemand eine Idee, warum das mit dem ursprünglichen Code trotzdem nicht funktioniert?
Grüsse & Danke
Rico