Corrected pkeys for listGet()

This commit is contained in:
Evan Prodromou 2011-08-08 12:01:15 -04:00
parent e09310ffb7
commit f405ffa507

View File

@ -267,7 +267,7 @@ class Memcached_DataObject extends Safe_DataObject
function listGet($cls, $keyCol, $keyVals) function listGet($cls, $keyCol, $keyVals)
{ {
$pkeyMap = array_fill_keys($keyVals, array()); $pkeyMap = array_fill_keys($keyVals, array());
$results = array_fill_keys($keyVals, array()); $result = array_fill_keys($keyVals, array());
$pkeyCols = self::pkeyCols($cls); $pkeyCols = self::pkeyCols($cls);
@ -280,19 +280,23 @@ class Memcached_DataObject extends Safe_DataObject
$l = self::cacheGet(sprintf("%s:list-ids:%s:%s", $cls, $keyCol, $keyVal)); $l = self::cacheGet(sprintf("%s:list-ids:%s:%s", $cls, $keyCol, $keyVal));
if ($l !== false) { if ($l !== false) {
$pkeyMap[$keyVal] = $l; $pkeyMap[$keyVal] = $l;
$allPkeys = array_merge($allPkeys, $l); foreach ($l as $pkey) {
$allPkeys[] = $pkey;
}
} else { } else {
$toFetch[] = $keyVal; $toFetch[] = $keyVal;
} }
} }
if (count($allPkeys) > 0) {
$keyResults = self::pivotGet($cls, $pkeyCols, $allPkeys); $keyResults = self::pivotGet($cls, $pkeyCols, $allPkeys);
foreach ($pkeyMap as $keyVal => $pkeyList) { foreach ($pkeyMap as $keyVal => $pkeyList) {
foreach ($pkeyList as $pkeyVal) { foreach ($pkeyList as $pkeyVal) {
$i = $keyResults[$pkeyVal]; $i = $keyResults[implode(',',$pkeyVal)];
if (!empty($i)) { if (!empty($i)) {
$results[$keyVal][] = $i; $result[$keyVal][] = $i;
}
} }
} }
} }
@ -304,6 +308,7 @@ class Memcached_DataObject extends Safe_DataObject
} }
$i->whereAddIn($keyCol, $toFetch, $i->columnType($keyCol)); $i->whereAddIn($keyCol, $toFetch, $i->columnType($keyCol));
if ($i->find()) { if ($i->find()) {
sprintf("listGet() got {$i->N} results for class $cls key $keyCol");
while ($i->fetch()) { while ($i->fetch()) {
$copy = clone($i); $copy = clone($i);
$copy->encache(); $copy->encache();