Class TActiveRecordHasMany
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.
+------+ +--------+
| Team | 1 <----- * | Player |
+------+ +--------+
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.
class TeamRecord extends TActiveRecord { const TABLE='team'; public $name; //primary key public $location; public $players=array(); //list of players public static $RELATIONS=array ( 'players' => array(self::HAS_MANY, 'PlayerRecord') ); public static function finder($className=__CLASS__) { return parent::finder($className); } } class PlayerRecord extends TActiveRecord { // see TActiveRecordBelongsTo for detailed definition }
The static $RELATIONS property of TeamRecord defines that the property $players has many PlayerRecords.
The players list may be fetched as follows.
$team = TeamRecord::finder()->with_players()->findAll();
The method with_xxx() (where xxx is the relationship property name, in this case, players) fetchs the corresponding PlayerRecords using a second query (not by using a join). The with_xxx() accepts the same arguments as other finder methods of TActiveRecord, e.g. with_players('age < ?', 35).
- TActiveRecordRelation
-
TActiveRecordHasMany
Copyright: Copyright © 2005-2014 PradoSoft
License: http://www.pradosoft.com/license/
Author: Wei Zhuo <weizho[at]gmail[dot]com>
Version: $Id$
Since: 3.1
Located at Data/ActiveRecord/Relations/TActiveRecordHasMany.php
protected
|
#
collectForeignObjects( array & $results )
Get the foreign key index values from the results and make calls to the database to find the corresponding foreign objects. |
public
array
|
|
public
boolean
|