# Class Relation

The Relation complex data type

  AlphaType
  Relation implements AlphaTypeInterface

Package: alpha::model::types
Copyright: Copyright (c) 2012, John Collins (founder of Alpha Framework). All rights reserved.

    Redistribution and use in source and binary forms, with or
    without modification, are permitted provided that the
    following conditions are met:

    * Redistributions of source code must retain the above
      copyright notice, this list of conditions and the
      following disclaimer.
    * Redistributions in binary form must reproduce the above
      copyright notice, this list of conditions and the
      following disclaimer in the documentation and/or other
      materials provided with the distribution.
    * Neither the name of the Alpha Framework nor the names
      of its contributors may be used to endorse or promote
      products derived from this software without specific
      prior written permission.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
    CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
    NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
    OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

License: The BSD License
Author: John Collins <dev@alphaframework.org>
Version: $Id: Relation.inc 1657 2013-06-04 09:37:40Z alphadevx $
Since: 1.0
Located at model/types/Relation.inc

Methods summary
`public` | # `__construct( )` Constructor Constructor #### Since 1.0
`public` | # `setRelatedClass( string $RC, string $side = '' )` Set the name of the business object class that this class is related to Set the name of the business object class that this class is related to #### Parameters $RC `string` $RC $side `string` $side Only required for MANY-TO-MANY relations #### Throws ``IllegalArguementException`` #### Since 1.0
`public string` | # `getRelatedClass( string $side = '' )` Get the name of the business object class that this class is related to Get the name of the business object class that this class is related to #### Parameters $side `string` $RC #### Returns `string` #### Throws ``IllegalArguementException`` #### Since 1.0
`public` | # `setRelatedClassField( string $RCF )` Setter for the field of the related class Setter for the field of the related class #### Parameters $RCF `string` $RCF #### Throws ``IllegalArguementException`` ``AlphaException`` #### Since 1.0
`public string` | # `getRelatedClassField( )` Getter for the field of the related class Getter for the field of the related class #### Returns `string` #### Since 1.0
`public` | # `setRelatedClassHeaderFields( array $fieldNames )` Setter for ONE-TO-MANY relations, which sets the header fields to render from the related class Setter for ONE-TO-MANY relations, which sets the header fields to render from the related class #### Parameters $fieldNames `array` $fieldNames #### Since 1.0
`public array` | # `getRelatedClassHeaderFields( )` Getter for the selection widget field headings of the related class Getter for the selection widget field headings of the related class #### Returns `array` #### Since 1.0
`public` | # `setRelatedClassDisplayField( string $RCDF, string $side = '' )` Setter for the display field from the related class Setter for the display field from the related class #### Parameters $RCDF `string` $RCDF $side `string` $side Only required for MANY-TO-MANY relations #### Throws ``IllegalArguementException`` #### Since 1.0
`public string` | # `getRelatedClassDisplayField( string $side = '' )` Getter for the display field from the related class Getter for the display field from the related class #### Parameters $side `string` $side Only required for MANY-TO-MANY relations #### Returns `string` #### Throws ``IllegalArguementException`` #### Since 1.0
`public` | # `setRelationType( string $RT )` Setter for the relation type Setter for the relation type #### Parameters $RT `string` $RT #### Throws ``IllegalArguementException`` ``FailedLookupCreateException`` ``IllegalArguementException`` #### Since 1.0
`public string` | # `getRelationType( )` Getter for the relation type Getter for the relation type #### Returns `string` #### Since 1.0
`public` | # `setValue( integer $val )` Setter for the value (OID of related object) of this relation Setter for the value (OID of related object) of this relation #### Parameters $val `integer` $val #### Throws ``IllegalArguementException`` #### Since 1.0 #### Implementation of `AlphaTypeInterface::setValue()`
`public mixed` | # `getValue( )` Getter for the Relation value Getter for the Relation value #### Returns `mixed` #### Since 1.0 #### Implementation of `AlphaTypeInterface::getValue()`
`public string` | # `getRule( )` Get the validation rule Get the validation rule #### Returns `string` #### Since 1.0
`public` | # `setRule( string $rule )` Setter to override the default validation rule Setter to override the default validation rule #### Parameters $rule `string` $rule #### Since 1.0
`public string` | # `getRelatedClassDisplayFieldValue( string $accessingClassName = '' )` Getter for the display value of the related class field. In the case of a MANY-TO-MANY Relation, a comma-seperated sorted list of values is returned. Getter for the display value of the related class field. In the case of a MANY-TO-MANY Relation, a comma-seperated sorted list of values is returned. #### Parameters $accessingClassName `string` $accessingClassName Used to indicate the reading side when accessing from MANY-TO-MANY relation (leave blank for other relation types) #### Returns `string` #### Throws ``IllegalArguementException`` ``AlphaException`` #### Since 1.0
`public array` | # `getRelatedObjects( mixed $accessingClassName = '' )` For one-to-many and many-to-many relations, get the objects on the other side For one-to-many and many-to-many relations, get the objects on the other side string $accessingClassName Used to indicate the reading side when accessing from MANY-TO-MANY relation (leave blank for other relation types) #### Returns `array` #### Throws ``IllegalArguementException`` ``AlphaException`` #### Since 1.0
`public array` | # `getRelatedObject( )` For one-to-one relations, get the object on the other side For one-to-one relations, get the object on the other side #### Returns `array` #### Throws ``AlphaException`` #### Since 1.0
`public integer` | # `getSize( )` Get the allowable size of the Relation in the database field Get the allowable size of the Relation in the database field #### Returns `integer` #### Since 1.0
`public `RelationLookup`` | # `getLookup( )` Get the lookup object if available (only on MANY-TO-MANY relations, null otherwise) Get the lookup object if available (only on MANY-TO-MANY relations, null otherwise) #### Returns ``RelationLookup`` #### Since 1.0
`public string` | # `getSide( string $BOClassname )` Gets the side ('left' or 'right') of the passed classname on the current Relation object Gets the side ('left' or 'right') of the passed classname on the current Relation object #### Parameters $BOClassname `string` $BOClassname #### Returns `string` #### Throws ``IllegalArguementException`` #### Since 1.0
`public` | # `setTaggedClass( mixed $taggedClass )` Set the taggedClass property to the name of the tagged class when building relations to the TagObject BO. Set the taggedClass property to the name of the tagged class when building relations to the TagObject BO. #### Parameters $taggedClass `mixed` $taggedClass #### Since 1.0

Methods inherited from AlphaType
`__toString(), getHelper(), setHelper()`

Constants summary
`integer` | `MAX_SIZE` | `11` | # The absolute maximum size of the value for the this Relation The absolute maximum size of the value for the this Relation #### Since 1.0

Properties summary
`private string` | $relatedClass | `` | # The name of the business object class which this class is related to The name of the business object class which this class is related to #### Since 1.0
`private string` | $relatedClassField | `` | # The name of the fields of the business object class by which this class is related by The name of the fields of the business object class by which this class is related by #### Since 1.0
`private string` | $relatedClassDisplayField | `` | # The name of the field from the related business object class which is displayed by the selection widget The name of the field from the related business object class which is displayed by the selection widget #### Since 1.0
`private array` | $relatedClassHeaderFields | `array()` | # An array of fields to use the values of while rendering related display values via the selection widget An array of fields to use the values of while rendering related display values via the selection widget #### Since 1.0
`private string` | $relatedClassLeft | `` | # The name of the business object class on the left of a MANY-TO-MANY relation The name of the business object class on the left of a MANY-TO-MANY relation #### Since 1.0
`private string` | $relatedClassLeftDisplayField | `` | # The name of the field from the related business object class on the left of a MANY-TO-MANY relation which is displayed by the selection widget The name of the field from the related business object class on the left of a MANY-TO-MANY relation which is displayed by the selection widget #### Since 1.0
`private string` | $relatedClassRight | `` | # The name of the business object class on the right of a MANY-TO-MANY relation The name of the business object class on the right of a MANY-TO-MANY relation #### Since 1.0
`private string` | $relatedClassRightDisplayField | `` | # The name of the field from the related business object class on the right of a MANY-TO-MANY relation which is displayed by the selection widget The name of the field from the related business object class on the right of a MANY-TO-MANY relation which is displayed by the selection widget #### Since 1.0
`private string` | $relationType | `` | # The type of relation ('MANY-TO-ONE' or 'ONE-TO-MANY' or 'ONE-TO-ONE' or 'MANY-TO-MANY') The type of relation ('MANY-TO-ONE' or 'ONE-TO-MANY' or 'ONE-TO-ONE' or 'MANY-TO-MANY') #### Since 1.0
`private `RelationLookup`` | $lookup | `` | # In the case of MANY-TO-MANY relationship, a lookup object will be required In the case of MANY-TO-MANY relationship, a lookup object will be required #### Since 1.0
`private string` | $taggedClass | `` | # When building a relation with the TagObject BO, set this to the name of the tagged class When building a relation with the TagObject BO, set this to the name of the tagged class #### Since 1.0
`private array` | $allowableRelationTypes | `array('MANY-TO-ONE','ONE-TO-MANY','ONE-TO-ONE','MANY-TO-MANY')` | # An array of the allowable relationship types ('MANY-TO-ONE' or 'ONE-TO-MANY' or 'ONE-TO-ONE' or 'MANY-TO-MANY') An array of the allowable relationship types ('MANY-TO-ONE' or 'ONE-TO-MANY' or 'ONE-TO-ONE' or 'MANY-TO-MANY') #### Since 1.0
`private mixed` | $value | `NULL` | # The object ID (OID) value of the related object. In the special case of a MANY-TO-MANY relation, contains the OID of the object on the current, accessing side. Can contain NULL. The object ID (OID) value of the related object. In the special case of a MANY-TO-MANY relation, contains the OID of the object on the current, accessing side. Can contain NULL. #### Since 1.0
`private string` | $validationRule | `` | # The validation rule for the Relation type The validation rule for the Relation type #### Since 1.0
`protected string` | $helper | `` | # The error message for the Relation type when validation fails The error message for the Relation type when validation fails #### Since 1.0
`private integer` | $size | `11` | # The size of the value for the this Relation The size of the value for the this Relation #### Since 1.0