diff --git a/src/Libs/ModelMySQL.php b/src/Libs/ModelMySQL.php index 512b1d5..cd6b39c 100644 --- a/src/Libs/ModelMySQL.php +++ b/src/Libs/ModelMySQL.php @@ -43,10 +43,10 @@ class ModelMySQL { * @return mysqli */ private static function db(){ - if (is_null(self::$db)) - self::$db = Database::getConnection(); + if (is_null(static::$db)) + static::$db = Database::getConnection(); - return self::$db; + return static::$db; } /* @@ -62,7 +62,7 @@ class ModelMySQL { * Contiene el resultado de la llamada SQL. */ private static function query($query){ - $db = self::db(); + $db = static::db(); $result = $db->query($query); if ($db->errno){ @@ -82,7 +82,7 @@ class ModelMySQL { * Reinicia la configuración de la sentencia SQL. */ private static function resetQuery(){ - self::$querySelect = [ + static::$querySelect = [ 'select' => '*', 'where' => '', 'leftJoin' => '', @@ -96,44 +96,44 @@ class ModelMySQL { } /* - * Construye la sentencia SQL a partir self::$querySelect y una vez + * Construye la sentencia SQL a partir static::$querySelect y una vez * construída, llama a resetQuery. * * @return string * Contiene la sentencia SQL. */ private static function buildQuery(){ - $sql = 'SELECT '.self::$querySelect['select'].' FROM '.self::table(); + $sql = 'SELECT '.static::$querySelect['select'].' FROM '.static::table(); - if (self::$querySelect['leftJoin'] != ''){ - $sql .= ' LEFT JOIN ' . self::$querySelect['leftJoin']; - $sql .= ' ON '. self::$querySelect['on']; - } elseif(self::$querySelect['rightJoin'] != ''){ - $sql .= ' RIGHT JOIN ' . self::$querySelect['leftJoin']; - $sql .= ' ON '. self::$querySelect['on']; + if (static::$querySelect['leftJoin'] != ''){ + $sql .= ' LEFT JOIN ' . static::$querySelect['leftJoin']; + $sql .= ' ON '. static::$querySelect['on']; + } elseif(static::$querySelect['rightJoin'] != ''){ + $sql .= ' RIGHT JOIN ' . static::$querySelect['leftJoin']; + $sql .= ' ON '. static::$querySelect['on']; } - if (self::$querySelect['where'] != ''){ - $sql .= ' WHERE '.self::$querySelect['where']; + if (static::$querySelect['where'] != ''){ + $sql .= ' WHERE '.static::$querySelect['where']; - if (self::$querySelect['AndOr'] != ''){ - $sql .= self::$querySelect['AndOr']; + if (static::$querySelect['AndOr'] != ''){ + $sql .= static::$querySelect['AndOr']; } } - if (self::$querySelect['groupBy'] != ''){ - $sql .= ' GROUP BY '.self::$querySelect['groupBy']; + if (static::$querySelect['groupBy'] != ''){ + $sql .= ' GROUP BY '.static::$querySelect['groupBy']; } - if (self::$querySelect['orderBy'] != ''){ - $sql .= ' ORDER BY '.self::$querySelect['orderBy']; + if (static::$querySelect['orderBy'] != ''){ + $sql .= ' ORDER BY '.static::$querySelect['orderBy']; } - if (self::$querySelect['limit'] != ''){ - $sql .= ' LIMIT '.self::$querySelect['limit']; + if (static::$querySelect['limit'] != ''){ + $sql .= ' LIMIT '.static::$querySelect['limit']; } - self::resetQuery(); + static::resetQuery(); return $sql; } @@ -186,16 +186,16 @@ class ModelMySQL { } /* - * Construye (a partir del nombre de la clase y el sufijo en self::$tableSufix) + * Construye (a partir del nombre de la clase y el sufijo en static::$tableSufix) * y/o develve el nombre de la tabla de la BD en la que se alojará o * se aloja el objeto actual. * * @return string */ private static function table(){ - if (isset(self::$table)) - return self::$table; - return self::className().self::$tableSufix; + if (isset(static::$table)) + return static::$table; + return static::className().static::$tableSufix; } /* @@ -205,15 +205,15 @@ class ModelMySQL { $atts = $this->getVars(); foreach ($atts as $key => $value){ - $value = self::db()->real_escape_string($value); + $value = static::db()->real_escape_string($value); $set[]="$key='$value'"; } - $table = self::table(); + $table = static::table(); $pk = $this->primaryKey; $pkv = $this->$pk; $sql = "UPDATE $table SET ".join(', ', $set)." WHERE $pk='$pkv'"; - self::query($sql); + static::query($sql); } /* @@ -221,7 +221,7 @@ class ModelMySQL { * objeto actual. */ private function add(){ - $db = self::db(); + $db = static::db(); $atts = $this->getVars(); foreach ($atts as $key => $value){ @@ -229,9 +229,9 @@ class ModelMySQL { $values[] = "'".$db->real_escape_string($value)."'"; } - $table = self::table(); + $table = static::table(); $sql = "INSERT INTO $table (".join(', ', $into).") VALUES (".join(', ', $values).")"; - self::query($sql); + static::query($sql); $pk = $this->primaryKey; $this->$pk = $db->insert_id; @@ -256,15 +256,15 @@ class ModelMySQL { $atts = $this->getVars(); foreach ($atts as $key => $value){ - $value = self::db()->real_escape_string($value); + $value = static::db()->real_escape_string($value); $set[]="$key='$value'"; } - $table = self::table(); + $table = static::table(); $pk = $this->primaryKey; $pkv = $this->$pk; $sql = "DELETE FROM $table WHERE $pk='$pkv'"; - self::query($sql); + static::query($sql); } /* @@ -274,13 +274,13 @@ class ModelMySQL { * Columnas que se selecionarán en la consulta SQL. */ public static function select($columns){ - $db = self::db(); + $db = static::db(); $select = []; foreach($columns as $column){ $select[] = $db->real_escape_string($column); } - self::$querySelect['select'] = join(', ', $select); + static::$querySelect['select'] = join(', ', $select); return new static(); } @@ -298,8 +298,8 @@ class ModelMySQL { * El valor el valor a comparar en la columna. * * Sintaxis posibles: - * - self::where(columna, operador, valor) - * - self::where(columna, valor) // Operador por defecto "=" + * - static::where(columna, operador, valor) + * - static::where(columna, valor) // Operador por defecto "=" */ public static function where($column, $operator, $value=null){ if (is_null($value)){ @@ -307,9 +307,9 @@ class ModelMySQL { $operator = '='; } - $value = self::db()->real_escape_string($value); + $value = static::db()->real_escape_string($value); - self::$querySelect['where'] = "$column$operator'$value'"; + static::$querySelect['where'] = "$column$operator'$value'"; return new static(); } @@ -328,13 +328,13 @@ class ModelMySQL { */ public static function where_in($column,$arr, $in = true){ foreach($arr as $index => $value){ - $arr[$index] = self::db()->real_escape_string($value); + $arr[$index] = static::db()->real_escape_string($value); } if ($in) - self::$querySelect['where'] = "$column IN (".join(', ',$arr).")"; + static::$querySelect['where'] = "$column IN (".join(', ',$arr).")"; else - self::$querySelect['where'] = "$column NOT IN (".join(', ',$arr).")"; + static::$querySelect['where'] = "$column NOT IN (".join(', ',$arr).")"; return new static(); } @@ -355,8 +355,8 @@ class ModelMySQL { * Columna a comparar para hacer el join. * * Sintaxis posibles: - * - self::leftJoin(tabla,columnaA, operador, columnB) - * - self::leftJoin(tabla,columnaA, columnB) // Operador por defecto "=" + * - static::leftJoin(tabla,columnaA, operador, columnB) + * - static::leftJoin(tabla,columnaA, columnB) // Operador por defecto "=" */ public static function leftJoin($table, $columnA, $operator, $columnB = null){ if (is_null($columnB)){ @@ -364,11 +364,11 @@ class ModelMySQL { $operator = '='; } - $columnA = self::db()->real_escape_string($columnA); - $columnB = self::db()->real_escape_string($columnB); + $columnA = static::db()->real_escape_string($columnA); + $columnB = static::db()->real_escape_string($columnB); - self::$querySelect['leftJoin'] = $table; - self::$querySelect['on'] = "$columnA$operator$columnB"; + static::$querySelect['leftJoin'] = $table; + static::$querySelect['on'] = "$columnA$operator$columnB"; return new static(); @@ -390,8 +390,8 @@ class ModelMySQL { * Columna a comparar para hacer el join. * * Sintaxis posibles: - * - self::rightJoin(tabla,columnaA, operador, columnB) - * - self::rightJoin(tabla,columnaA, columnB) // Operador por defecto "=" + * - static::rightJoin(tabla,columnaA, operador, columnB) + * - static::rightJoin(tabla,columnaA, columnB) // Operador por defecto "=" */ public static function rightJoin($table, $columnA, $operator, $columnB = null){ if (is_null($columnB)){ @@ -399,11 +399,11 @@ class ModelMySQL { $operator = '='; } - $columnA = self::db()->real_escape_string($columnA); - $columnB = self::db()->real_escape_string($columnB); + $columnA = static::db()->real_escape_string($columnA); + $columnB = static::db()->real_escape_string($columnB); - self::$querySelect['rightJoin'] = $table; - self::$querySelect['on'] = "$columnA$operator$columnB"; + static::$querySelect['rightJoin'] = $table; + static::$querySelect['on'] = "$columnA$operator$columnB"; return new static(); @@ -422,9 +422,9 @@ class ModelMySQL { * El valor el valor a comparar en la columna. * * Sintaxis posibles: - * - self::and(columna, operador, valor) - * - self::and(columna, valor) // Operador por defecto "=" - * - self::and(columna, valor)->and(columna, valor)->and(columna, valor) // anidado + * - static::and(columna, operador, valor) + * - static::and(columna, valor) // Operador por defecto "=" + * - static::and(columna, valor)->and(columna, valor)->and(columna, valor) // anidado */ public static function and($column, $operator, $value=null){ if (is_null($value)){ @@ -432,9 +432,9 @@ class ModelMySQL { $operator = '='; } - $value = self::db()->real_escape_string($value); + $value = static::db()->real_escape_string($value); - self::$querySelect['AndOr'] .= " AND $column$operator'$value'"; + static::$querySelect['AndOr'] .= " AND $column$operator'$value'"; return new static(); } @@ -452,9 +452,9 @@ class ModelMySQL { * El valor el valor a comparar en la columna. * * Sintaxis posibles: - * - self::or(columna, operador, valor) - * - self::or(columna, valor) // Operador por defecto "=" - * - self::or(columna, valor)->or(columna, valor)->or(columna, valor) // anidado + * - static::or(columna, operador, valor) + * - static::or(columna, valor) // Operador por defecto "=" + * - static::or(columna, valor)->or(columna, valor)->or(columna, valor) // anidado */ public static function or($column, $operator, $value=null){ if (is_null($value)){ @@ -462,9 +462,9 @@ class ModelMySQL { $operator = '='; } - $value = self::db()->real_escape_string($value); + $value = static::db()->real_escape_string($value); - self::$querySelect['AndOr'] .= " OR $column$operator'$value'"; + static::$querySelect['AndOr'] .= " OR $column$operator'$value'"; return new static(); } @@ -476,7 +476,7 @@ class ModelMySQL { * Columnas por las que se agrupará. */ public static function groupBy($arr){ - self::$querySelect['groupBy'] = join(', ', $arr); + static::$querySelect['groupBy'] = join(', ', $arr); return new static(); } @@ -485,9 +485,9 @@ class ModelMySQL { $final = (int)$final; if ($final==0) - self::$querySelect['limit'] = $initial; + static::$querySelect['limit'] = $initial; else - self::$querySelect['limit'] = $initial.', '.$final; + static::$querySelect['limit'] = $initial.', '.$final; return new static(); } @@ -504,16 +504,16 @@ class ModelMySQL { */ public static function orderBy($value, $order = 'ASC'){ if ($value == "RAND"){ - self::$querySelect['orderBy'] = 'RAND()'; + static::$querySelect['orderBy'] = 'RAND()'; return new static(); } - $value = self::db()->real_escape_string($value); + $value = static::db()->real_escape_string($value); if (!(strtoupper($order) == 'ASC' || strtoupper($order) == 'DESC')) $order = 'ASC'; - self::$querySelect['orderBy'] = $value.' '.$order; + static::$querySelect['orderBy'] = $value.' '.$order; return new static(); } @@ -524,9 +524,9 @@ class ModelMySQL { * @return int */ public static function count(){ - self::$querySelect['select'] = 'count(*) as quantity'; - $sql = self::buildQuery(); - $result = self::query($sql)->fetch_assoc(); + static::$querySelect['select'] = 'count(*) as quantity'; + $sql = static::buildQuery(); + $result = static::query($sql)->fetch_assoc(); return $result['quantity']; } @@ -537,7 +537,7 @@ class ModelMySQL { * @return ModelMySQL */ public static function getById($id){ - return self::where('id', $id)->getFirst(); + return static::where('id', $id)->getFirst(); } /* @@ -555,7 +555,7 @@ class ModelMySQL { $objAtts = array_keys((new $className())->getVars()); } - $db = self::db(); + $db = static::db(); $search = $db->real_escape_string($search); @@ -565,10 +565,10 @@ class ModelMySQL { $where[] = "$row LIKE '%$search%'"; } - if (self::$querySelect['where']=='') - self::$querySelect['where'] = join($where, ' OR '); + if (static::$querySelect['where']=='') + static::$querySelect['where'] = join($where, ' OR '); else - self::$querySelect['where'] = self::$querySelect['where'] .' AND ('.join($where, ' OR ').')'; + static::$querySelect['where'] = static::$querySelect['where'] .' AND ('.join($where, ' OR ').')'; return new static(); } @@ -579,13 +579,13 @@ class ModelMySQL { * @return ModelMySQL[] */ public static function get(){ // Devuelve array vacío si no encuentra nada - $sql = self::buildQuery(); - $result = self::query($sql); + $sql = static::buildQuery(); + $result = static::query($sql); $instaces = []; while ($row = $result->fetch_assoc()){ - $instaces[] = self::getInstance($row); + $instaces[] = static::getInstance($row); } return $instaces; @@ -598,8 +598,8 @@ class ModelMySQL { * Puede retornar un objeto ModelMySQL o null. */ public static function getFirst(){ // Devuelve null si no encuentra nada - self::limit(1); - $instaces = self::get(); + static::limit(1); + $instaces = static::get(); return empty($instaces) ? null : $instaces[0]; } @@ -609,14 +609,14 @@ class ModelMySQL { * @return ModelMySQL[] */ public static function all(){ - $sql = 'SELECT * FROM '.self::table(); + $sql = 'SELECT * FROM '.static::table(); - $result = self::query($sql); + $result = static::query($sql); $instaces = []; while ($row = $result->fetch_assoc()){ - $instaces[] = self::getInstance($row); + $instaces[] = static::getInstance($row); } return $instaces;