Phalcon - linguagem de consulta
Phalcon Query Language (PHQL) também chamado de PhalconQL é um dialeto SQL de alto nível que padroniza as consultas SQL para os sistemas de banco de dados suportados pelo Phalcon.
Inclui um analisador, escrito em C, que traduz a sintaxe no RDBMS de destino.
Aqui está uma lista de algumas das características proeminentes da linguagem de consulta Phalcon -
Para segurança do aplicativo da web, ele usa parâmetros vinculados.
As tabelas são tratadas como modelos, enquanto as colunas são tratadas como atributos de classe.
Todas as instruções de manipulação de dados são usadas para evitar a perda de dados que pode ocorrer.
A injeção de SQL é evitada mantendo uma chamada de consulta SQL de cada vez.
Criação de uma consulta PHQL
As consultas são criadas pela classe de instanciação Phalcon\Mvc\Model\Query.
Exemplo
// Instantiate the Query
$query = new Query(
"SELECT * FROM Users",
$this->getDI()
);
// Execute the query returning a result if any
$cars = $query->execute();
Nos capítulos anteriores, vimos o funcionamento do aplicativo scaffold da Web denominado blog tutorial. Incluía pesquisar categorias por nome ou lesma.
A seguir está o código incluído para searchAction.
public function searchAction() {
$numberPage = 1;
if ($this->request->isPost()) {
$query = Criteria::fromInput($this->di, "Categories", $_POST);
$this->session->conditions = $query->getConditions();
} else {
$numberPage = $this->request->getQuery("page", "int");
if ($numberPage <= 0) {
$numberPage = 1;
}
}
$parameters = array();
if ($this->session->conditions) {
$parameters["conditions"] = $this->session->conditions;
}
// $parameters["order"] = "id";
$categories = Categories::find($parameters);
if (count($categories) == 0) {
$this->flash->notice("The search did not find any categories");
return $this->dispatcher->forward(array(
"controller" => "categories",
"action" => "index"
));
}
$paginator = new \Phalcon\Paginator\Adapter\Model(array(
"data" => $categories,
"limit"=> 10,
"page" => $numberPage
));
$page = $paginator->getPaginate();
$this->view->setVar("page", $page);
}
A consulta PHQL executada (destacada) no controlador irá buscar todos os resultados de acordo com a condição de pesquisa. O resultado de qualquer consulta de pesquisa de acordo com a condição será exibido como na captura de tela.
A seguir está a saída recebida na execução bem-sucedida do código acima.
Ciclo de vida de PHQL
Por ser uma linguagem de alto nível, o PHQL fornece aos desenvolvedores a capacidade de personalizar e customizar vários aspectos de acordo com os requisitos.
A seguir está o ciclo de vida de cada instrução PHQL executada no Phalcon -
Cada instrução PHQL é analisada e convertida como uma representação intermediária (IR) que é completamente independente do SQL implementado pelo sistema de banco de dados.
O IR é convertido em instrução SQL de acordo com o sistema de banco de dados que é usado no aplicativo da web. As instruções SQL geradas são associadas ao modelo.
Todas as instruções PHQL são analisadas uma vez e armazenadas em cache na memória. Se o mesmo resultado da instrução for executado, ajudará no desempenho mais rápido.