PHP Class Prado\Data\ActiveRecord\Relations\TActiveRecordHasOne
The difference of HAS_ONE from HAS_MANY is that the foreign object is singular.
That is, HAS_MANY will return a collection of records while HAS_ONE returns the
corresponding record.
Consider the
entity relationship between a Car and a Engine.
+-----+ +--------+
| Car | 1 <----- 1 | Engine |
+-----+ +--------+
Where each engine belongs to only one car, that is, the Engine entity has
a foreign key to the Car's primary key. We may model
Engine-Car
object relationship as active record as follows.
class CarRecord extends TActiveRecord
{
const TABLE='car';
public $car_id; //primary key
public $colour;
public $engine; //engine foreign object
public static $RELATIONS=array
(
'engine' => array(self::HAS_ONE, 'EngineRecord')
);
public static function finder($className=__CLASS__)
{
return parent::finder($className);
}
}
class EngineRecord extends TActiveRecord
{
const TABLE='engine';
public $engine_id;
public $capacity;
public $car_id; //foreign key to cars
public static function finder($className=__CLASS__)
{
return parent::finder($className);
}
}
The static
$RELATIONS property of CarRecord defines that the
property
$engine that will reference an
EngineRecord instance.
The car record with engine property list may be fetched as follows.
$cars = CarRecord::finder()->with_engine()->findAll();
The method
with_xxx() (where
xxx is the relationship property
name, in this case,
engine) fetchs the corresponding EngineRecords 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_engine('capacity < ?', 3.8).
显示文件
Open project: pradosoft/prado
Public Methods
Protected Methods
Method |
Description |
|
collectForeignObjects ( &$results ) |
Get the foreign key index values from the results and make calls to the
database to find the corresponding foreign objects. |
|
setObjectProperty ( $source, $properties, &$collections ) |
Sets the foreign objects to the given property on the source object. |
|
Method Details
collectForeignObjects()
protected method
Get the foreign key index values from the results and make calls to the
database to find the corresponding foreign objects.
getRelationForeignKeys()
public method
setObjectProperty()
protected method
Sets the foreign objects to the given property on the source object.
updateAssociatedRecords()
public method
Updates the associated foreign objects.