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.