private function _fetch($ids = array(), $pkname = "id") { $r = Cache_Global::GetObject($this->tableName, $ids, $pkname); $r = $r ? $r : array(); $diff = array_diff($ids, array_keys($r)); if (!$diff) { return $r; } $rr = DB::LimitQuery($this->tableName, array($pkname => array_values($diff)), array('one' => false), $this->readDB); Cache_Global::SetObject($this->tableName, $rr, $pkname); $r = array_merge($r, $rr); return Util_Array::SortArray($r, $ids, $pkname); }