|
Generated methods for relationships between CFCs
When a relationship is defined in a CFC, ColdFusion generates
a few methods in the CFC object to add or remove associated objects
and to check their existence, for each relationship defined in the
CFC.
The generated methods for relationships include:
add<relationship_property_name>()
This
method is generated for one-to-many and many-to-many relationships. The
method adds the given object to the association collection (array
or struct) of the component. For a bidirectional relationship, this
method does not set the association on the other end.
For type="array",
the method signature is:
add<relationship_property_name>(<associated_object>)
For type="struct",
the method signature is:
add<relationship_property_name>(<key>, <associated_object>)
boolean remove<relationship_property_name>()
This
method is generated for one-to-many and many-to-many relationships. The
method removes the object from the associated collection (array
or struct) of the component. If the associated object was removed
from the collection successfully, then true is returned. For a bidirectional
relationship, this method does not remove the association from the
other end.
For type="array", the method signature
is:
remove<relationship_property_name>(<associated_object>)
For type="struct",
the method signature is:
remove<relationship_property_name>(<key>).
boolean Has<relationship_property_name>()
This
method is generated for all the relationships. For one-to-many and
many-to-many, this method checks whether the association collection
is empty. If the association collection is empty, it will return
true. For one-to-one and many-to-one, this method checks whether
the associated object exists.
boolean Has<relationship_property_name>(<associated_object>)
This
method is generated for one-to-many and many-to-many relationships. The
method checks whether the given associated object is present in
the association collection. If it is present, it returns true.
For type="array",
the method signature is
boolean has<relationship_property_name>(<associated_object>)
For type="struct",
the method signature is
boolean has<relationship_property_name>(<key>)
ExampleConsider the following example
of artists (ARTISTS table) and artwork (ART table), where the artist
forms a one-to-many relationship with artwork.
Artist.cfc <cfcomponent persistent="true" schema="APP" table="Artists">
<cfproperty name="artistid" fieldtype="id"/>
<cfproperty name="firstname"/>
<cfproperty name="lastname"/>
<cfproperty name="state"/>
<cfproperty name="art" fieldtype="one-to-many" cfc="Art" fkcolumn="ArtistID" >
</cfcomponent>
Art.cfc <cfcomponent persistent="true" schema="APP" table="Art">
<cfproperty name="artid" fieldtype="id"/>
<cfproperty name="artname"/>
<cfproperty name="issold"/>
</cfcomponent>
In this example Artist has
a relation field art with Art. The following methods
are implicitly added to the Artist object:
The attribute singularName provides
the flexibility to change the name of the generated relationship
methods. For example, if the relationship property of Artist is
specified as follows:
<cfproperty name="art" fieldtype="one-to-many" cfc="Art" fkcolumn="ArtistID" singularName="Art">
then
the following methods are generated:
addArt(Art art)
removeArt(Art art)
hasArt()
hasArt(Art art)
|