diff options
author | wei <> | 2007-01-09 10:42:06 +0000 |
---|---|---|
committer | wei <> | 2007-01-09 10:42:06 +0000 |
commit | 03f362a40a8dd39f8c8b4bf816334922b7b264e4 (patch) | |
tree | 73efc71e946519d2086520102a6c8a022510463a /framework/Data/ActiveRecord/Vendor/TDbMetaDataCommon.php | |
parent | a59a458f9ae2b178d08854c112f34068b50ea243 (diff) |
add TActiveRecord::findAllByPks()
Diffstat (limited to 'framework/Data/ActiveRecord/Vendor/TDbMetaDataCommon.php')
-rw-r--r-- | framework/Data/ActiveRecord/Vendor/TDbMetaDataCommon.php | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/framework/Data/ActiveRecord/Vendor/TDbMetaDataCommon.php b/framework/Data/ActiveRecord/Vendor/TDbMetaDataCommon.php index fffdb6fb..7f7dad8b 100644 --- a/framework/Data/ActiveRecord/Vendor/TDbMetaDataCommon.php +++ b/framework/Data/ActiveRecord/Vendor/TDbMetaDataCommon.php @@ -41,6 +41,24 @@ abstract class TDbMetaDataCommon extends TDbMetaData }
/**
+ * SQL database command for finding records by a list of primary keys.
+ * @param TDbConnection database connection.
+ * @param array list of primary keys to match.
+ * @return TDbCommand find by list of primary keys command.
+ */
+ public function getFindInPksCommand($conn, $keys)
+ {
+ $conn->setActive(true);
+ $columns = $this->getSelectionColumns();
+ $table = $this->getTableName();
+ $criteria = $this->getCompositeKeysCriteria($conn,$keys);
+ $sql = "SELECT {$columns} FROM {$table} WHERE {$criteria}";
+ $command = $conn->createCommand($sql);
+ $command->prepare();
+ return $command;
+ }
+
+ /**
* SQL database command for finding records using a criteria object.
* @param TDbConnection database connection.
* @param TActiveRecordCriteria criteria object
@@ -160,14 +178,8 @@ abstract class TDbMetaDataCommon extends TDbMetaData public function getDeleteByPkCommand($conn,$keys)
{
$conn->setActive(true);
- $numKeys = count($this->getPrimaryKeys());
$table = $this->getTableName();
- if($numKeys===0)
- throw new TActiveRecordException('ar_no_primary_key_found',$table);
- if($numKeys===1)
- $criteria = $this->getDeleteInPkCriteria($conn,$keys);
- else
- $criteria = $this->getDeleteMultiplePkCriteria($conn,$keys);
+ $criteria = $this->getCompositeKeysCriteria($conn, $keys);
$sql = "DELETE FROM {$table} WHERE {$criteria}";
$command = $conn->createCommand($sql);
$command->prepare();
|