Phalcon - Lenguaje de consulta

Lenguaje de consulta Phalcon (PHQL) también llamado PhalconQL es un dialecto SQL de alto nivel que estandariza las consultas SQL para los sistemas de bases de datos compatibles con Phalcon.

Incluye un analizador, escrito en C, que traduce la sintaxis en el RDBMS de destino.

Aquí hay una lista de algunas de las características destacadas del lenguaje de consulta de Phalcon:

  • Para la seguridad de la aplicación web, utiliza parámetros vinculados.

  • Las tablas se tratan como modelos, mientras que las columnas se tratan como atributos de clase.

  • Todas las declaraciones de manipulación de datos se utilizan para evitar la pérdida de datos que puede ocurrir.

  • La inyección de SQL se evita manteniendo la llamada de consulta SQL de una en una.

Crear una consulta PHQL

Las consultas se crean instanciando la clase Phalcon\Mvc\Model\Query.

Ejemplo

// Instantiate the Query 
$query = new Query( 
   "SELECT * FROM Users", 
   $this->getDI() 
);  

// Execute the query returning a result if any 
$cars = $query->execute();

En los capítulos anteriores, hemos visto el funcionamiento de la aplicación web de andamios denominada tutorial de blog. Incluía categorías de búsqueda por nombre o babosa.

A continuación se muestra el código incluido 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); 
}

La consulta PHQL ejecutada (resaltada) en el controlador obtendrá todos los resultados según la condición de búsqueda. El resultado de cualquier consulta de búsqueda según la condición se mostrará como en la captura de pantalla.

A continuación se muestra la salida recibida en la ejecución exitosa del código anterior.

Ciclo de vida de PHQL

Al ser un lenguaje de alto nivel, PHQL brinda a los desarrolladores la capacidad de personalizar y personalizar varios aspectos según los requisitos.

A continuación se muestra el ciclo de vida de cada declaración PHQL ejecutada en Phalcon:

  • Cada declaración PHQL se analiza y convierte como una Representación Intermedia (IR) que es completamente independiente del SQL implementado por el sistema de base de datos.

  • El IR se convierte en una declaración SQL según el sistema de base de datos que se utiliza en la aplicación web. Las sentencias SQL generadas están asociadas con el modelo.

  • Todas las declaraciones PHQL se analizan una vez y se almacenan en la memoria caché. Si se ejecuta el mismo resultado de instrucción, ayudará a un rendimiento más rápido.