public static function getLatestCommentByUserId($userId) { $status = new self(); $status->setProjection(array("comment")); $status->setCondition("user_id", $userId); $status->setOrderBy("created_at", "desc"); $status->setLimit(1); $statuses = $status->select(); return isset($statuses[0]) ? $statuses[0]->comment : ""; }
public function select($lazy = true) { $class = new $this->className(); $typeFields = $class->getTypeFields(); $customFields = isset($class->getMapping()['customFields']) ? $class->getMapping()['customFields'] : false; $fields = array(); foreach ($this->fields as $field) { $oldField = $field; /* * verifica se não há algum campo com a consulta personalizada * */ if ($customFields) { if (in_array($field, array_keys(MasterSQLUteis::decodeProperties($customFields)))) { $field = MasterSQLUteis::decodeProperties($customFields)[$field]; } } /* * faz o tratamento para buscar os dados de acordo com o tipo correto date, number... * */ if (array_key_exists($field, $typeFields)) { if ($typeFields[$field]->dataType == 'DATE') { $field = "TO_CHAR(" . $field . ",'RRRR-MM-DD HH24:MI')"; } elseif ($typeFields[$field]->dataType == 'NUMBER') { if ($typeFields[$field]->dataScale > 0) { $field = "(" . $field . " * (1 * Power(10,''||" . $typeFields[$field]->dataScale . "))) "; } } $field = MasterSQLUteis::tableField($field, $oldField, $this->table); } array_push($fields, $field); } $this->db->select($fields, false); $this->db->from($this->table); if ($this->join) { $this->db->join($this->join, $this->joinCondition); } $this->query = $this->db->get(); $this->error = MasterSQLUteis::exception($this->db->error()); MasterSQLUteis::exception($this->db->error(), false); if ($this->query->num_rows() > 0) { $return = $this->query->result(); } else { return false; } $arrayObject = array(); $array = (array) $class; $fks = isset($class->getMapping()['foreignKeys']) && !$lazy ? $class->getMapping()['foreignKeys'] : false; foreach ($return as $object) { $object = (array) $object; foreach ($object as $key => $value) { if (array_key_exists($key, $typeFields)) { if ($typeFields[$key]->dataType == 'NUMBER') { if ($typeFields[$key]->dataScale > 0) { $object[$key] = (double) ($value / (1 * pow(10, $typeFields[$key]->dataScale))); } else { $object[$key] = (int) $value; } } } } $object = (object) $object; $i = 0; foreach ($array as $campo => $valor) { $o = (array) $object; $returnFk = false; if ($fks) { if (in_array($campo, array_keys($fks))) { $query = new self(new $fks[$campo]['class']()); $query->setWhere($fks[$campo]['pk'], $o[MasterSQLUteis::decodeProperties($campo)]); $query->setOrderBy($fks[$campo]['orderBy'], isset($fks[$campo]['orderByOrder']) ? $fks[$campo]['orderByOrder'] : 'asc'); $query->select($lazy); if ($fks[$campo]['method'] == 'oneToOne') { $returnFk = $query->row; } else { $returnFk = $query->result; } } } if ($returnFk) { $array[$campo] = $returnFk; } else { $array[$campo] = $o[MasterSQLUteis::decodeProperties($campo)]; } } array_push($arrayObject, MasterSQLUteis::cast(new $this->className(), (object) $array)); } $this->result = $arrayObject; $this->row = $arrayObject[0]; $this->count = count($this->result) == null ? 0 : count($this->result); $this->exists = $this->count == 0 ? false : true; }