Improve where, and, or and search method.
- static::$querySelect['AndOr'] is REMOVED. - where, and, or and search now use only the static::$querySelect['where'] index. - removed unnecesary brackets on buildQuery.
This commit is contained in:
parent
53bdc92344
commit
404bd59569
@ -37,7 +37,6 @@ class Model {
|
|||||||
'leftJoin' => '',
|
'leftJoin' => '',
|
||||||
'rightJoin' => '',
|
'rightJoin' => '',
|
||||||
'innerJoin' => '',
|
'innerJoin' => '',
|
||||||
'AndOr' => '',
|
|
||||||
'orderBy' => '',
|
'orderBy' => '',
|
||||||
'groupBy' => '',
|
'groupBy' => '',
|
||||||
'limit' => ''
|
'limit' => ''
|
||||||
@ -142,7 +141,6 @@ class Model {
|
|||||||
'leftJoin' => '',
|
'leftJoin' => '',
|
||||||
'rightJoin' => '',
|
'rightJoin' => '',
|
||||||
'innerJoin' => '',
|
'innerJoin' => '',
|
||||||
'AndOr' => '',
|
|
||||||
'orderBy' => '',
|
'orderBy' => '',
|
||||||
'groupBy' => '',
|
'groupBy' => '',
|
||||||
'limit' => ''
|
'limit' => ''
|
||||||
@ -160,43 +158,31 @@ class Model {
|
|||||||
protected static function buildQuery() : string {
|
protected static function buildQuery() : string {
|
||||||
$sql = 'SELECT '.join(', ', static::$querySelect['select']);
|
$sql = 'SELECT '.join(', ', static::$querySelect['select']);
|
||||||
|
|
||||||
if (static::$querySelect['from'] != '') {
|
if (static::$querySelect['from'] != '')
|
||||||
$sql .= ' FROM '.static::$querySelect['from'];
|
$sql .= ' FROM '.static::$querySelect['from'];
|
||||||
} else {
|
else
|
||||||
$sql .= ' FROM '.static::table();
|
$sql .= ' FROM '.static::table();
|
||||||
}
|
|
||||||
|
|
||||||
if(static::$querySelect['innerJoin'] != '') {
|
if(static::$querySelect['innerJoin'] != '')
|
||||||
$sql .= static::$querySelect['innerJoin'];
|
$sql .= static::$querySelect['innerJoin'];
|
||||||
}
|
|
||||||
|
|
||||||
if (static::$querySelect['leftJoin'] != '') {
|
if (static::$querySelect['leftJoin'] != '')
|
||||||
$sql .= static::$querySelect['leftJoin'];
|
$sql .= static::$querySelect['leftJoin'];
|
||||||
}
|
|
||||||
|
|
||||||
if(static::$querySelect['rightJoin'] != '') {
|
if(static::$querySelect['rightJoin'] != '')
|
||||||
$sql .= static::$querySelect['rightJoin'];
|
$sql .= static::$querySelect['rightJoin'];
|
||||||
}
|
|
||||||
|
|
||||||
if (static::$querySelect['where'] != '') {
|
if (static::$querySelect['where'] != '')
|
||||||
$sql .= ' WHERE '.static::$querySelect['where'];
|
$sql .= ' WHERE '.static::$querySelect['where'];
|
||||||
|
|
||||||
if (static::$querySelect['AndOr'] != '') {
|
if (static::$querySelect['groupBy'] != '')
|
||||||
$sql .= static::$querySelect['AndOr'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (static::$querySelect['groupBy'] != '') {
|
|
||||||
$sql .= ' GROUP BY '.static::$querySelect['groupBy'];
|
$sql .= ' GROUP BY '.static::$querySelect['groupBy'];
|
||||||
}
|
|
||||||
|
|
||||||
if (static::$querySelect['orderBy'] != '') {
|
if (static::$querySelect['orderBy'] != '')
|
||||||
$sql .= ' ORDER BY '.static::$querySelect['orderBy'];
|
$sql .= ' ORDER BY '.static::$querySelect['orderBy'];
|
||||||
}
|
|
||||||
|
|
||||||
if (static::$querySelect['limit'] != '') {
|
if (static::$querySelect['limit'] != '')
|
||||||
$sql .= ' LIMIT '.static::$querySelect['limit'];
|
$sql .= ' LIMIT '.static::$querySelect['limit'];
|
||||||
}
|
|
||||||
|
|
||||||
return $sql;
|
return $sql;
|
||||||
}
|
}
|
||||||
@ -416,6 +402,28 @@ class Model {
|
|||||||
* @return Model
|
* @return Model
|
||||||
*/
|
*/
|
||||||
public static function where(string $column, string $operatorOrValue, string $value=null, bool $no_filter = false) : Model {
|
public static function where(string $column, string $operatorOrValue, string $value=null, bool $no_filter = false) : Model {
|
||||||
|
return static::and($column, $operatorOrValue, $value, $no_filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define AND en la sentencia SQL (se puede anidar).
|
||||||
|
*
|
||||||
|
* @param string $column
|
||||||
|
* La columna a comparar.
|
||||||
|
*
|
||||||
|
* @param string $operatorOrValue
|
||||||
|
* El operador o el valor a comparar como igual en caso de que $value no se defina.
|
||||||
|
*
|
||||||
|
* @param string $value
|
||||||
|
* (opcional) El valor el valor a comparar en la columna.
|
||||||
|
*
|
||||||
|
* @param bool $no_filter
|
||||||
|
* (opcional) Se usa cuando $value es una columna o un valor que no requiere filtros
|
||||||
|
* contra ataques SQLI (por defecto es false).
|
||||||
|
*
|
||||||
|
* @return Model
|
||||||
|
*/
|
||||||
|
public static function and(string $column, string $operatorOrValue, string $value=null, bool $no_filter = false) : Model {
|
||||||
if (is_null($value)) {
|
if (is_null($value)) {
|
||||||
$value = $operatorOrValue;
|
$value = $operatorOrValue;
|
||||||
$operatorOrValue = '=';
|
$operatorOrValue = '=';
|
||||||
@ -424,7 +432,45 @@ class Model {
|
|||||||
if (!$no_filter)
|
if (!$no_filter)
|
||||||
$value = static::bindValue($value);
|
$value = static::bindValue($value);
|
||||||
|
|
||||||
static::$querySelect['where'] = "$column $operatorOrValue $value";
|
if (static::$querySelect['where'] == '')
|
||||||
|
static::$querySelect['where'] = "$column $operatorOrValue $value";
|
||||||
|
else
|
||||||
|
static::$querySelect['where'] .= " AND $column $operatorOrValue $value";
|
||||||
|
|
||||||
|
return new static();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define OR en la sentencia SQL (se puede anidar).
|
||||||
|
*
|
||||||
|
* @param string $column
|
||||||
|
* La columna a comparar.
|
||||||
|
*
|
||||||
|
* @param string $operatorOrValue
|
||||||
|
* El operador o el valor a comparar como igual en caso de que $value no se defina.
|
||||||
|
*
|
||||||
|
* @param string $value
|
||||||
|
* (opcional) El valor el valor a comparar en la columna.
|
||||||
|
*
|
||||||
|
* @param bool $no_filter
|
||||||
|
* (opcional) Se usa cuando $value es una columna o un valor que no requiere filtros
|
||||||
|
* contra ataques SQLI (por defecto es false).
|
||||||
|
*
|
||||||
|
* @return Model
|
||||||
|
*/
|
||||||
|
public static function or(string $column, string $operatorOrValue, string $value=null, bool $no_filter = false) : Model {
|
||||||
|
if (is_null($value)) {
|
||||||
|
$value = $operatorOrValue;
|
||||||
|
$operatorOrValue = '=';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$no_filter)
|
||||||
|
$value = static::bindValue($value);
|
||||||
|
|
||||||
|
if (static::$querySelect['where'] == '')
|
||||||
|
static::$querySelect['where'] = "$column $operatorOrValue $value";
|
||||||
|
else
|
||||||
|
static::$querySelect['where'] .= " OR $column $operatorOrValue $value";
|
||||||
|
|
||||||
return new static();
|
return new static();
|
||||||
}
|
}
|
||||||
@ -541,70 +587,6 @@ class Model {
|
|||||||
return new static();
|
return new static();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Define AND en la sentencia SQL (se puede anidar).
|
|
||||||
*
|
|
||||||
* @param string $column
|
|
||||||
* La columna a comparar.
|
|
||||||
*
|
|
||||||
* @param string $operatorOrValue
|
|
||||||
* El operador o el valor a comparar como igual en caso de que $value no se defina.
|
|
||||||
*
|
|
||||||
* @param string $value
|
|
||||||
* (opcional) El valor el valor a comparar en la columna.
|
|
||||||
*
|
|
||||||
* @param bool $no_filter
|
|
||||||
* (opcional) Se usa cuando $value es una columna o un valor que no requiere filtros
|
|
||||||
* contra ataques SQLI (por defecto es false).
|
|
||||||
*
|
|
||||||
* @return Model
|
|
||||||
*/
|
|
||||||
public static function and(string $column, string $operatorOrValue, string $value=null, bool $no_filter = false) : Model {
|
|
||||||
if (is_null($value)) {
|
|
||||||
$value = $operatorOrValue;
|
|
||||||
$operatorOrValue = '=';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$no_filter)
|
|
||||||
$value = static::bindValue($value);
|
|
||||||
|
|
||||||
static::$querySelect['AndOr'] .= " AND $column $operatorOrValue $value";
|
|
||||||
|
|
||||||
return new static();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Define OR en la sentencia SQL (se puede anidar).
|
|
||||||
*
|
|
||||||
* @param string $column
|
|
||||||
* La columna a comparar.
|
|
||||||
*
|
|
||||||
* @param string $operatorOrValue
|
|
||||||
* El operador o el valor a comparar como igual en caso de que $value no se defina.
|
|
||||||
*
|
|
||||||
* @param string $value
|
|
||||||
* (opcional) El valor el valor a comparar en la columna.
|
|
||||||
*
|
|
||||||
* @param bool $no_filter
|
|
||||||
* (opcional) Se usa cuando $value es una columna o un valor que no requiere filtros
|
|
||||||
* contra ataques SQLI (por defecto es false).
|
|
||||||
*
|
|
||||||
* @return Model
|
|
||||||
*/
|
|
||||||
public static function or(string $column, string $operatorOrValue, string $value=null, bool $no_filter = false) : Model {
|
|
||||||
if (is_null($value)) {
|
|
||||||
$value = $operatorOrValue;
|
|
||||||
$operatorOrValue = '=';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$no_filter)
|
|
||||||
$value = static::bindValue($value);
|
|
||||||
|
|
||||||
static::$querySelect['AndOr'] .= " OR $column $operatorOrValue $value";
|
|
||||||
|
|
||||||
return new static();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Define GROUP BY en la sentencia SQL.
|
* Define GROUP BY en la sentencia SQL.
|
||||||
*
|
*
|
||||||
@ -741,7 +723,7 @@ class Model {
|
|||||||
$db = static::db();
|
$db = static::db();
|
||||||
|
|
||||||
$search = static::bindValue($search);
|
$search = static::bindValue($search);
|
||||||
$where = [];
|
$where = [];
|
||||||
|
|
||||||
if (DB_TYPE == 'sqlite')
|
if (DB_TYPE == 'sqlite')
|
||||||
foreach($in as $row)
|
foreach($in as $row)
|
||||||
|
Loading…
Reference in New Issue
Block a user