Diskuze: Symfony doctrine vazba OneToMany
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Nejsem u PC, takže ti nedám úplně přesnou odpověď. Anotace OneToMany a ManyToOne mají atribut cascade, což je pole kam se zadává persist, refresh, delete a all. To určuje jak se zachází s přidruženými entitami, když se ukládá nějaká entita. Více zde https://www.doctrine-project.org/…iations.html.
O relaci v Doctrine je vzdy jedna strana vazby tzv. řídící a jedna strana vazby ne. tzn. owning side a inverse side. Pak platí že když u hlavní části relace přidáš i tu vazbu a uložíš pomocí persist + flush tu hlavní tak se uloží i ta druhá strana.
Ale pokud založíš tu slabší stranu, neřídící a tu ukládáš tak se
ta vazba neuloží.
Tedy vždy je potřeba si hlídat ty dvě strany.
viz
https://www.doctrine-project.org/…iations.html
My v týmu programujeme na ukládání složité entity s vazbami speciální service, třeba v tomto případě něco jako ProposalCreator a ten ma metodu např. createAndSaveProposal do které pošleme všechna data z formuláře (valueobject - dataholder) a v ní se vyrobí nezbytné entity a ty se uloží - každá extra persistem a pak na závěr jeden flush.
Snad jsme to popsal srozumitelne, kdyz tak napis.
Btw. Doporučuji vše v kódu psát anglicky. Včetně názvů proměnných , tříd, interfaces etc....
Zobrazeno 3 zpráv z 3.