- Home
- About
- Testimonials
- Demos
- Download
- Documentation
- Blogs
- Forum
- Support

Packages: default System System.Caching System.Collections System.Data System.Data.ActiveRecord System.Data.ActiveRecord.Relations System.Data.ActiveRecord.Scaffold System.Data.ActiveReecord.Scaffold.InputBuilder System.Data.Commom.Sqlite System.Data.Common System.Data.Common.Mssql System.Data.Common.Mysql System.Data.Common.Oracle System.Data.Common.Pgsql System.Data.Common.Sqlite System.Data.DataGateway System.Data.SqlMap System.Data.SqlMap.Configuration System.Data.SqlMap.Statements System.Exceptions System.I18N System.IO System.Security System.Util System.Web System.Web.Services System.Web.UI System.Web.UI.ActiveControls System.Web.UI.WebControls System.Web.UI.WebControls.assets System.Xml Classes: TActiveRecordBelongsTo TActiveRecordHasMany TActiveRecordHasManyAssociation TActiveRecordHasOne TActiveRecordRelation TActiveRecordRelationContext |
Keyword
# Class TActiveRecordHasMany
    TActiveRecordRelation
       |
       --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 <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.

     $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>. Since: 3.1 Author: Wei Zhuo <weizho[at]gmail[dot]com>
Method Summary
protected void | collectForeignObjects ( array &$results) Get the foreign key index values from the results and make calls to the database to find the corresponding foreign objects.
array | getRelationForeignKeys ()
boolean | updateAssociatedRecords () Updates the associated foreign objects.
Methods Inherited From TActiveRecordRelation
TActiveRecordRelation::fetchResultsInto(), TActiveRecordRelation::findForeignKeys(), TActiveRecordRelation::findForeignObjects(), TActiveRecordRelation::getContext(), TActiveRecordRelation::getCriteria(), TActiveRecordRelation::getIndexValues(), TActiveRecordRelation::getObjectHash(), TActiveRecordRelation::getSourceRecord(), TActiveRecordRelation::populateResult(), TActiveRecordRelation::setObjectProperty(), TActiveRecordRelation::setResultCollection(), TActiveRecordRelation::__call()
Method Details
## collectForeignObjects
protected void collectForeignObjects | (array &$results )
Get the foreign key index values from the results and make calls to the database to find the corresponding foreign objects.
Input
array | &$results | original results.
Output
Exception
## getRelationForeignKeys
public array getRelationForeignKeys | ()
Output
array | foreign key field names as key and object properties as value.
Exception
## updateAssociatedRecords
public boolean updateAssociatedRecords | ()
Updates the associated foreign objects.
Output
boolean | true if all update are success (including if no update was required), false otherwise .
Exception