Commit ae2490d8eb1371ce5740fb2969e904a352bed8d7
1 parent
d65209c9
KTEntityUtil::getList2 doesn't need the table passed.
KTEntityUTil::getByDict can be passed a dictionary of fields to values
to look up.
KTEntityUtil::getBy{,Dict} can be asked to return multiple results.
git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3484 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
31 additions
and
10 deletions
lib/ktentity.inc
| @@ -220,6 +220,11 @@ class KTEntity { | @@ -220,6 +220,11 @@ class KTEntity { | ||
| 220 | } | 220 | } |
| 221 | 221 | ||
| 222 | class KTEntityUtil { | 222 | class KTEntityUtil { |
| 223 | + function &getList2($sClassName, $sWhereClause = null) { | ||
| 224 | + $sTable = call_user_func(array($sClassName, "_table")); | ||
| 225 | + return KTEntityUtil::getList($sTable, $sClassName, $sWhereClause); | ||
| 226 | + } | ||
| 227 | + | ||
| 223 | function &getList($sTable, $sClassName, $sWhereClause = null) { | 228 | function &getList($sTable, $sClassName, $sWhereClause = null) { |
| 224 | $sQuery = "SELECT id FROM " . $sTable;/*ok*/ | 229 | $sQuery = "SELECT id FROM " . $sTable;/*ok*/ |
| 225 | $aParams = array(); | 230 | $aParams = array(); |
| @@ -290,20 +295,36 @@ class KTEntityUtil { | @@ -290,20 +295,36 @@ class KTEntityUtil { | ||
| 290 | return $oObject; | 295 | return $oObject; |
| 291 | } | 296 | } |
| 292 | 297 | ||
| 293 | - function &getBy($sClassName, $sField, $mValue) { | ||
| 294 | - $sTable = call_user_func(array($sClassName, "_table")); | ||
| 295 | - $sWhereClause = array("$sField = ?", array($mValue)); | ||
| 296 | - $aObjects =& KTEntityUtil::getList($sTable, $sClassName, $sWhereClause); | 298 | + function &getBy($sClassName, $aField, $mValue, $bMulti = false) { |
| 299 | + if (is_string($aField)) { | ||
| 300 | + $sWhereClause = array("$aField = ?", array($mValue)); | ||
| 301 | + } else { | ||
| 302 | + $aWhere = array(); | ||
| 303 | + foreach ($aField as $k => $sField) { | ||
| 304 | + $aWhere[] = array("$sField = ?", array($mValue[$k])); | ||
| 305 | + } | ||
| 306 | + $sWhereClause = KTUtil::whereToString($aWhere); | ||
| 307 | + } | ||
| 308 | + $aObjects =& KTEntityUtil::getList2($sClassName, $sWhereClause); | ||
| 297 | if (PEAR::isError($aObjects)) { | 309 | if (PEAR::isError($aObjects)) { |
| 298 | return $aObjects; | 310 | return $aObjects; |
| 299 | } | 311 | } |
| 300 | - if (count($aObjects) === 0) { | ||
| 301 | - return PEAR::raiseError("No objects returned"); | ||
| 302 | - } | ||
| 303 | - if (count($aObjects) > 1) { | ||
| 304 | - return PEAR::raiseError("Multiple objects returned"); | 312 | + if ($bMulti === false) { |
| 313 | + if (count($aObjects) === 0) { | ||
| 314 | + return PEAR::raiseError("No objects returned"); | ||
| 315 | + } | ||
| 316 | + if (count($aObjects) > 1) { | ||
| 317 | + return PEAR::raiseError("Multiple objects returned"); | ||
| 318 | + } | ||
| 319 | + return $aObjects[0]; | ||
| 320 | + } else { | ||
| 321 | + return $aObjects; | ||
| 305 | } | 322 | } |
| 306 | - return $aObjects[0]; | 323 | + } |
| 324 | + | ||
| 325 | + function &getByDict($sClassName, $aDict, $bMulti = false) { | ||
| 326 | + return KTEntityUtil::getBy($sClassName, array_keys($aDict), array_values($aDict), $bMulti); | ||
| 327 | + | ||
| 307 | } | 328 | } |
| 308 | } | 329 | } |
| 309 | 330 |