Class TActiveRecordHasMany

Description

Implements TActiveRecord::HAS_MANY relationship between the source object having zero or more foreign objects. Consider the entity relationship between a Team and a Player.

  1. +------+ +--------+
  2. | Team | 1 <----- * | Player |
  3. +------+ +--------+
Where one team may have 0 or more players and each player belongs to only one team. We may model Team-Player object relationship as active record as follows.
  1. class TeamRecord extends TActiveRecord
  2. {
  3. const TABLE='team';
  4. public $name; //primary key
  5. public $location;
  6.  
  7. public $players=array(); //list of players
  8.  
  9. public static $RELATIONS=array
  10. (
  11. 'players' => array(self::HAS_MANY, 'PlayerRecord')
  12. );
  13.  
  14. public static function finder($className=__CLASS__)
  15. {
  16. return parent::finder($className);
  17. }
  18. }
  19. class PlayerRecord extends TActiveRecord
  20. {
  21. // see TActiveRecordBelongsTo for detailed definition
  22. }
The static <tt>$RELATIONS</tt> property of TeamRecord defines that the property <tt>$players</tt> has many <tt>PlayerRecord</tt>s.

The players list may be fetched as follows.

  1. $team = TeamRecord::finder()->with_players()->findAll();
The method <tt>with_xxx()</tt> (where <tt>xxx</tt> is the relationship property name, in this case, <tt>players</tt>) fetchs the corresponding PlayerRecords using a second query (not by using a join). The <tt>with_xxx()</tt> accepts the same arguments as other finder methods of TActiveRecord, e.g. <tt>with_players('age < ?', 35)</tt>.

Located in /Data/ActiveRecord/Relations/TActiveRecordHasMany.php (line 69)

TActiveRecordRelation
   |
   --TActiveRecordHasMany
Method Summary
void collectForeignObjects (array &$results)
Methods
collectForeignObjects (line 76)

Get the foreign key index values from the results and make calls to the database to find the corresponding foreign objects.

  • access: protected
void collectForeignObjects (array &$results)
  • array &$results: original results.

Redefinition of:
TActiveRecordRelation::collectForeignObjects()
getRelationForeignKeys (line 92)
  • return: foreign key field names as key and object properties as value.
  • access: public
  • since: 3.1.2
array getRelationForeignKeys ()

Redefinition of:
TActiveRecordRelation::getRelationForeignKeys()
updateAssociatedRecords (line 102)

Updates the associated foreign objects.

  • return: true if all update are success (including if no update was required), false otherwise .
  • access: public
boolean updateAssociatedRecords ()

Inherited Methods

Inherited From TActiveRecordRelation

TActiveRecordRelation::__construct()
TActiveRecordRelation::collectForeignObjects()
TActiveRecordRelation::fetchResultsInto()
TActiveRecordRelation::findForeignKeys()
TActiveRecordRelation::findForeignObjects()
TActiveRecordRelation::getContext()
TActiveRecordRelation::getCriteria()
TActiveRecordRelation::getIndexValues()
TActiveRecordRelation::getObjectHash()
TActiveRecordRelation::getRelationForeignKeys()
TActiveRecordRelation::getSourceRecord()
TActiveRecordRelation::populateResult()
TActiveRecordRelation::setObjectProperty()
TActiveRecordRelation::setResultCollection()
TActiveRecordRelation::__call()

Documentation generated on Mon, 21 Apr 2008 11:29:42 -0400 by phpDocumentor 1.3.0RC4