From 03f362a40a8dd39f8c8b4bf816334922b7b264e4 Mon Sep 17 00:00:00 2001 From: wei <> Date: Tue, 9 Jan 2007 10:42:06 +0000 Subject: add TActiveRecord::findAllByPks() --- framework/Data/ActiveRecord/TActiveRecord.php | 33 +++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'framework/Data/ActiveRecord/TActiveRecord.php') diff --git a/framework/Data/ActiveRecord/TActiveRecord.php b/framework/Data/ActiveRecord/TActiveRecord.php index 68d63a23..d3e25dcf 100644 --- a/framework/Data/ActiveRecord/TActiveRecord.php +++ b/framework/Data/ActiveRecord/TActiveRecord.php @@ -38,7 +38,7 @@ Prado::using('System.Data.ActiveRecord.TActiveRecordCriteria'); * public $username; //corresponds to the fieldname in the table * public $email; * - * private static final $_tablename='users'; //optional table name. + * public static final $_tablename='users'; //optional table name. * * //returns active record finder instance * public static function finder() @@ -332,13 +332,42 @@ abstract class TActiveRecord extends TComponent */ public function findByPk($keys) { - if(func_num_args() > 1 && !is_array($keys)) + if(func_num_args() > 1) $keys = func_get_args(); $gateway = $this->getRecordManager()->getRecordGateway(); $data = $gateway->findRecordByPK($this,$keys); return $this->populateObject(get_class($this), $data); } + /** + * Find multiple records matching a list of primary or composite keys. + * + * For scalar primary keys: + * + * $finder->findAllByPk($key1, $key2, ...); + * $finder->findAllByPk(array($key1, $key2, ...)); + * + * + * For composite keys: + * + * $finder->findAllByPk(array($key1, $key2), array($key3, $key4), ...); + * $finder->findAllByPk(array(array($key1, $key2), array($key3, $key4), ...)); + * + * @param mixed primary keys + * @return array matching ActiveRecords + */ + public function findAllByPks($keys) + { + if(func_num_args() > 1) + $keys = func_get_args(); + $gateway = $this->getRecordManager()->getRecordGateway(); + $results = array(); + $class = get_class($this); + foreach($gateway->findRecordsByPks($this,(array)$keys) as $data) + $results[] = $this->populateObject($class,$data); + return $results; + } + /** * Find records using full SQL, returns corresponding record object. * @param string select SQL -- cgit v1.2.3