Allow where table1.colum=table2.colum on ModelMySQL.

This commit is contained in:
kj 2020-03-27 10:47:00 -04:00
parent 2d377eb803
commit 8f1c00ebdf

View File

@ -26,15 +26,16 @@ class ModelMySQL {
static protected $tableSufix = 's'; static protected $tableSufix = 's';
static protected $db; static protected $db;
static protected $querySelect = [ static protected $querySelect = [
'select' => '*', 'select' => '*',
'where' => '', 'where' => '',
'leftJoin' => '', 'from' => '',
'leftJoin' => '',
'rightJoin' => '', 'rightJoin' => '',
'innerJoin' => '', 'innerJoin' => '',
'AndOr' => '', 'AndOr' => '',
'orderBy'=>'', 'orderBy' => '',
'groupBy'=>'', 'groupBy' => '',
'limit' => '', 'limit' => '',
]; ];
/* /*
@ -104,7 +105,7 @@ class ModelMySQL {
* Contiene la sentencia SQL. * Contiene la sentencia SQL.
*/ */
private static function buildQuery() { private static function buildQuery() {
$sql = 'SELECT '.static::$querySelect['select']: $sql = 'SELECT '.static::$querySelect['select'];
if (static::$querySelect['from'] != '') { if (static::$querySelect['from'] != '') {
$sql .= ' FROM '.static::$querySelect['from']; $sql .= ' FROM '.static::$querySelect['from'];
@ -326,11 +327,14 @@ class ModelMySQL {
* @param string $value * @param string $value
* El valor el valor a comparar en la columna. * El valor el valor a comparar en la columna.
* *
* @param $is_colum
* Se usa cuando $value es una columna de la tabla y no un valor
*
* Sintaxis posibles: * Sintaxis posibles:
* - static::where(columna, operador, valor) * - static::where(columna, operador, valor)
* - static::where(columna, valor) // Operador por defecto "=" * - static::where(columna, valor) // Operador por defecto "="
*/ */
public static function where($column, $operator, $value=null) { public static function where($column, $operator, $value=null, $is_colum = false) {
if (is_null($value)) { if (is_null($value)) {
$value = $operator; $value = $operator;
$operator = '='; $operator = '=';
@ -338,7 +342,10 @@ class ModelMySQL {
$value = static::db()->real_escape_string($value); $value = static::db()->real_escape_string($value);
static::$querySelect['where'] = "$column$operator'$value'"; if ($is_colum)
static::$querySelect['where'] = "$column$operator$value";
else
static::$querySelect['where'] = "$column$operator'$value'";
return new static(); return new static();
} }
@ -480,12 +487,15 @@ class ModelMySQL {
* @param string $value * @param string $value
* El valor el valor a comparar en la columna. * El valor el valor a comparar en la columna.
* *
* @param $is_colum
* Se usa cuando $value es una columna de la tabla y no un valor
*
* Sintaxis posibles: * Sintaxis posibles:
* - static::and(columna, operador, valor) * - static::and(columna, operador, valor)
* - static::and(columna, valor) // Operador por defecto "=" * - static::and(columna, valor) // Operador por defecto "="
* - static::and(columna, valor)->and(columna, valor)->and(columna, valor) // anidado * - static::and(columna, valor)->and(columna, valor)->and(columna, valor) // anidado
*/ */
public static function and($column, $operator, $value=null) { public static function and($column, $operator, $value=null, $is_colum = false) {
if (is_null($value)) { if (is_null($value)) {
$value = $operator; $value = $operator;
$operator = '='; $operator = '=';
@ -493,7 +503,10 @@ class ModelMySQL {
$value = static::db()->real_escape_string($value); $value = static::db()->real_escape_string($value);
static::$querySelect['AndOr'] .= " AND $column$operator'$value'"; if ($is_colum)
static::$querySelect['AndOr'] .= " AND $column$operator$value";
else
static::$querySelect['AndOr'] .= " AND $column$operator'$value'";
return new static(); return new static();
} }
@ -510,12 +523,15 @@ class ModelMySQL {
* @param string $value * @param string $value
* El valor el valor a comparar en la columna. * El valor el valor a comparar en la columna.
* *
* @param $is_colum
* Se usa cuando $value es una columna de la tabla y no un valor
*
* Sintaxis posibles: * Sintaxis posibles:
* - static::or(columna, operador, valor) * - static::or(columna, operador, valor)
* - static::or(columna, valor) // Operador por defecto "=" * - static::or(columna, valor) // Operador por defecto "="
* - static::or(columna, valor)->or(columna, valor)->or(columna, valor) // anidado * - static::or(columna, valor)->or(columna, valor)->or(columna, valor) // anidado
*/ */
public static function or($column, $operator, $value=null) { public static function or($column, $operator, $value=null, $is_colum = false) {
if (is_null($value)) { if (is_null($value)) {
$value = $operator; $value = $operator;
$operator = '='; $operator = '=';
@ -523,7 +539,10 @@ class ModelMySQL {
$value = static::db()->real_escape_string($value); $value = static::db()->real_escape_string($value);
static::$querySelect['AndOr'] .= " OR $column$operator'$value'"; if ($is_colum)
static::$querySelect['AndOr'] .= " OR $column$operator$value";
else
static::$querySelect['AndOr'] .= " OR $column$operator'$value'";
return new static(); return new static();
} }