Skip to content
This repository was archived by the owner on Jul 17, 2020. It is now read-only.

Commit 5a4664b

Browse files
reyostallenbergniels-nijens
authored andcommitted
Add support for generating cascades (#60)
1 parent 993bb72 commit 5a4664b

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

Resources/xsl/doctrine-mapping.xsl

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,33 @@
258258
<xsl:attribute name='field'><xsl:value-of select='@name'/></xsl:attribute>
259259
<xsl:attribute name='target-entity'><xsl:value-of select='@object'/></xsl:attribute>
260260
<xsl:attribute name='mapped-by'><xsl:value-of select='@field'/></xsl:attribute>
261+
<xsl:apply-templates select='self::node()' mode='inverseReferencesCascades'/>
262+
</xsl:element>
263+
</xsl:template>
264+
265+
<!--
266+
Add cascades to the inverse-reference.
267+
-->
268+
<xsl:template match='object/orm/inverse-reference' mode='inverseReferencesCascades'/>
269+
<xsl:template match='object/orm/inverse-reference[@cascade-persist="true" or @cascade-remove="true" or @cascade-detach="true" or @cascade-merge="true"]' mode='inverseReferencesCascades'>
270+
<xsl:element name='cascade' namespace='http://doctrine-project.org/schemas/orm/doctrine-mapping'>
271+
<xsl:if test='@cascade-persist="true"'>
272+
<xsl:element name='cascade-persist' namespace='http://doctrine-project.org/schemas/orm/doctrine-mapping'/>
273+
</xsl:if>
274+
<xsl:if test='@cascade-remove="true"'>
275+
<xsl:element name='cascade-remove' namespace='http://doctrine-project.org/schemas/orm/doctrine-mapping'/>
276+
</xsl:if>
277+
<xsl:if test='@cascade-merge="true"'>
278+
<xsl:element name='cascade-merge' namespace='http://doctrine-project.org/schemas/orm/doctrine-mapping'/>
279+
</xsl:if>
280+
<xsl:if test='@cascade-detach="true"'>
281+
<xsl:element name='cascade-detach' namespace='http://doctrine-project.org/schemas/orm/doctrine-mapping'/>
282+
</xsl:if>
283+
</xsl:element>
284+
</xsl:template>
285+
<xsl:template match='object/orm/inverse-reference[@cascade-all="true" or (@cascade-persist="true" and @cascade-remove="true" and @cascade-detach="true" and @cascade-merge="true")]' mode='inverseReferencesCascades'>
286+
<xsl:element name='cascade' namespace='http://doctrine-project.org/schemas/orm/doctrine-mapping'>
287+
<xsl:element name='cascade-all' namespace='http://doctrine-project.org/schemas/orm/doctrine-mapping'/>
261288
</xsl:element>
262289
</xsl:template>
263290

0 commit comments

Comments
 (0)