Temat: mapowanie i collection - problem z usuwaniem powiązanych...

Witam, od jakiegoś czasu walczę z pewnym problemem odnośnie takiej relacji:
Student 1 - * StudentSupport * - 1 Support
Pod SonataAdminBundle próbuję dodać do studenta jakieś wsparcie i mi się to udaje - wszystko jest tworzone. Edycja też działa bez zarzutu... Problem jest natomiast z usuwaniem wsparcia dla studenta podczas edycji samego studenta. Z kolekcji jest wszystko usuwane, a baza z jakichś przyczyn nie chce się zaktualizować. Nie robiłem powiązania typu many to many, gdyż do encji StudentSupport potrzebuję dodać dodatkowe pole. Jeśli ktoś mógłby podpowiedzieć dlaczego nie chce mi działać usuwanie, to byłbym wdzięczny. Pod spodem podrzucam trochę kodu:

//Student.orm.xml
<one-to-many field="studentSupport" target-entity="StudentSupport" mapped-by="student">
<join-columns>
<join-column name="user_id" referenced-column-name="id" />
</join-columns>
<cascade>
<cascade-persist/>
</cascade>
</one-to-many>


//StudentSupport.orm.xml
<many-to-one field="student" target-entity="Student" inversed-by="studentSupport">
<join-column name="student_id" referenced-column-name="id" />
<cascade>
<cascade-all/>
</cascade>
</many-to-one>

<many-to-one field="support" target-entity="Support" inversed-by="studentSupport">
<join-column name="support_id" referenced-column-name="id" />
<cascade>
<cascade-all/>
</cascade>
</many-to-one>


<one-to-many field="studentSupport" target-entity="StudentSupport" mapped-by="support">
<cascade>
<cascade-persist/>
</cascade>
</one-to-many>

W adminie wygląda to tak:

->add('studentSupport', 'collection', array(
'label' => 'label.support',
'required' => false,
'allow_add' => true,
'allow_delete' => true,
'type' => 'system_form_student_supports',
'by_reference' => false,
'options' => array(
/** @Ignore */ 'label' => false
)
))

Metoda usuwająca wsparcie danego studenta się odpala

public function removeStudentSupport(StudentSupport $studentSupport)
{
$this->studentSupport->removeElement($studentSupport);
}


Problem rozwiązany:
<one-to-many field="studentSupport" target-entity="StudentSupport" mapped-by="student" orphan-removal="true">
<cascade>
<cascade-persist />
<cascade-refresh />
</cascade>
</one-to-many>
Ten post został edytowany przez Autora dnia 24.07.13 o godzinie 18:16