Example #1
0
 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 : "";
 }
Example #2
0
 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;
 }