Skip to content

naoxink/Query

Repository files navigation

Query

Y esto.. por qué?

Pues por el simple echo de hacerlo :)

Ejemplos de uso:

Importación

PHP

require 'Query.class.php';

JS

const Query = require('Query.class.js')

Vía NPM

npm i querysqljs
const Query = require('querysqljs')

Instancia

PHP

$q = new Query();

JS

const q = new Query()

Consultas

PHP

$q->select([ 'id', 'nombre' ])
  ->from('usuarios u')
  ->join('INNER', 'datos_usuarios d', [ 'u.id = d.id_usuario' ])
  ->where([ 'edad > 30', 'pelo = "marrón"' ])
  ->andWhere([ 'nombre = "maikel"' ])
  ->orderBy([ 'nombre ASC' ])
  ->groupBy([ 'edad' ])
  ->having([ 'edad > 3' ])
  ->limit(2, 10);

JS

q.select([ 'id', 'nombre' ])
 .from('usuarios u')
 .join('INNER', 'datos_usuarios d', [ 'u.id = d.id_usuario' ])
 .where([ 'edad > 30', 'pelo = "marrón"' ])
 .andWhere([ 'nombre = "maikel"' ])
 .orderBy([ 'nombre ASC' ])
 .groupBy([ 'edad' ])
 .having([ 'edad > 3' ])
 .limit(2, 10)

También puede separarse:

PHP

$q->select([ 'id', 'nombre' ])->from('usuarios u')->where([ 'color_pelo = "castaño"' ]);

if($mayoresDeEdad){
  $q->andWhere([ 'edad >= 18' ]);
}

$q->limit(5);

JS

q.select([ 'id', 'nombre' ])->from('usuarios u')->where([ 'color_pelo = "castaño"' ])

if(mayoresDeEdad){
  q.andWhere([ 'edad >= 18' ])
}

$q->limit(5);

PHP

$q->insert('usuarios')
  ->fields([ 'id', 'nombre' ])
  ->values([ 1234, '"Gaby"' ]);

JS

q.insert('usuarios')
 .fields([ 'id', 'nombre' ])
 .values([ 1234, '"Gaby"' ])

PHP

$q->delete()
  ->from('usuarios')
  ->where([ 'nombre = "raule"' ])
  ->limit(1);

JS

q.delete()
 .from('usuarios')
 .where([ 'nombre = "raule"' ])
 .limit(1)

PHP

$q->update('usuarios')
  ->set([ 'edad = 50' ])
  ->where([ 'id = 2' ])
  ->limit(1);

JS

q.update('usuarios')
 .set([ 'edad = 50' ])
 .where([ 'id = 2' ])
 .limit(1)

Para obtener la consulta final

PHP

$strQuery = $q->getQuery();

JS

const strQuery = q.getQuery()

NOTA: Los métodos select, where, andWhere, orderBy, groupBy y having pueden recibir como parámetro un array o un string

Ejemplo:

PHP

$q->select('id, nombre, edad')
  ->from('usuarios')
  ->where('edad > 18')
  ->orderBy('edad DESC')
  ->groupBy('edad')
  ->having('id > 2');

JS

q.select('id, nombre, edad')
 .from('usuarios')
 .where('edad > 18')
 .orderBy('edad DESC')
 .groupBy('edad')
 .having('id > 2')

JOINS

Se pueden usar los distintos tipos de métodos para unir tablas El método genérico join se puede usar para los joins que carecen de aliases como CROSS JOIN, LEFT OUTTER JOIN, etc.

  • ->join($joinType, $table, $on): $q->join('INNER', 'usuarios_datos ud', [ u.id = ud.id_usuario ])
  • ->innerJoin($table, $on): $q->innerJoin('usuarios_datos ud', [ u.id = ud.id_usuario ])
  • ->leftJoin($table, $on): $q->leftJoin('usuarios_datos ud', [ u.id = ud.id_usuario ])
  • ->rightJoin($table, $on): $q->rightJoin('usuarios_datos ud', [ u.id = ud.id_usuario ])

Paginación

Existe un método page para el cálculo del offset en la paginación:

PHP

$q->select('id, nombre, edad')
  ->from('usuarios')
  ->where('edad > 18')
  ->orderBy('edad DESC')
  ->groupBy('edad')
  ->having('id > 2')
  ->limit(5)
  ->page(2);

JS

q.select('id, nombre, edad')
 .from('usuarios')
 .where('edad > 18')
 .orderBy('edad DESC')
 .groupBy('edad')
 .having('id > 2')
 .limit(5)
 .page(2)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published