Skip to content

BrLayer CC v1.1.0

Latest

Choose a tag to compare

@kevind3v kevind3v released this 28 Oct 16:34

Novidade: Query para consultas com JOIN

Nova classe para relatórios, consultas com mais de uma tabela e filtros dinâmicos. O resultado vem em arrays associativos.

use BrLayer\Query;

$query = Query::create()
    ->select("u.id, u.first_name, c.name AS company")
    ->from("users u")
    ->leftJoin("companies c", "c.id", "u.company_id")
    ->where("u.status = ?", "ativo")
    ->andWhereIn("u.company_id", $empresas)
    ->order("u.first_name")
    ->limit(20);

$total = $query->count();      // ignora order, limit e offset (para paginação)
$users = $query->fetchArray();
  • Joins: innerJoin(), leftJoin() e join() para ON com mais de uma condição.
  • Condições: where(), andWhere(), orWhere(), com valores por ? (um por ? ou um só para todos) ou por :nome. Quantidade de valores errada lança exceção.
  • andWhereIn() com lista vazia não encontra nada; com NOT IN, não exclui nada.
  • count() por COUNT(*), inclusive com GROUP BY e DISTINCT.
  • Agrupamento e ordem: group()/order() validados, groupRaw()/orderRaw() para funções.
  • Outros recursos: limit(null)/offset(null), query() para SQL próprio, fail()/throwOnFail(), getStatement()/getParams().

select(), from(), os joins e o texto do where() vão para o SQL como foram escritos: nunca coloque dados do usuário neles.

Documentação completa no README.

Sem mudanças incompatíveis em relação à 1.0.0.