/** @param params the parameters to match against @param defaults the default values to be passed to upsert @return returns the primary key for a model using cached results */ public function identifier($params, $defaults = array()) { $key = $this->key($params); if (!isset($this->cache[$key])) { $model = $this->model; $changes = array("summary" => "none"); $obj = $this->readonly ? new $this->model($this->db->filter($params)) : $model::upsert($this->db->filter($params), $params, $defaults, $changes); $this->cache[$key] = $obj->primaryKey(); if ($changes["summary"] == "new") { DTLog::info(DTLog::colorize("New object '{$model}' ({$this->cache[$key]})", "warn")); DTLog::info($changes); } } return $this->cache[$key]; }