- Se agregan nuevas funcionalidades al utilizar setTable y todas las funciones relacionadas con join. Desde ahora es posible enviarle un objeto de QueryBuilder para crear consultas con SubQuerys.
Ejemplos:
Subquerys
$builder = new MySqlBuilder();
$direcciones = $builder->select();
$direcciones->setTable("Direcciones");
$query = $builder->select();
$query->setTable(['D' => $direcciones])
->setColumns([
'direccion_id' => 'D.id'
]);
Joins con Subquerys
$builder = new MySqlBuilder();
$query = $builder->select();
$query->setTable(['O' => 'OPERACIONES'])
->setColumns([
'operation_id' => 'O.id'
]);
$direcciones = $builder->select();
$direcciones->setTable("DIRECCIONES")
->setColumns([
'direccion_id' => 'D.id'
]);
$query->join( [ 'D' => $direcciones ], "D.id", "O.direccion_id");
Uniones dentro de un subquery
$builder = new MySqlBuilder();
$vanilla = $builder->select();
$vanilla->setTable("OPERACIONES");
$vanilla->setColumns([
'id'
]);
$lite = $builder->select();
$lite->setTable("OPERACIONES_LITE");
$lite->setColumns([
'id'
]);
$union = $builder->union();
$union->add($vanilla)->add($lite);
$query = $builder->query();
$query->setTable($union);
- Se agrega orderBy() y algunos metodos más que sera necesario estudiarlos en su momento, en una instancia de union.
$builder = new MySqlBuilder();
$vanilla = $builder->select();
$vanilla->setTable("OPERACIONES");
$vanilla->setColumns([
'id'
]);
$lite = $builder->select();
$lite->setTable("OPERACIONES_LITE");
$lite->setColumns([
'id'
]);
$query = $builder->union();
$query->add($vanilla)->add($lite);
$query->orderBy( "id" );