Base de datos Nette
Nette Database es una potente y elegante capa de base de datos para PHP con un enfoque en la simplicidad y características inteligentes. Ofrece dos formas complementarias de trabajar con sus datos – utilizando el Explorador para un desarrollo rápido, o la forma SQL para un control total sobre las consultas.
Vía SQL
- Consultas seguras y parametrizadas
- Control preciso de la estructura de las consultas SQL
- Ideal para escribir consultas complejas con funciones avanzadas
- Optimización del rendimiento mediante funciones SQL específicas
Vía Explorer
- Desarrollo rápido sin escribir SQL
- Manejo intuitivo de las relaciones entre tablas
- Optimización automática de consultas
- Ideal para interactuar rápida y cómodamente con la base de datos
Instalación
Puede descargar e instalar la biblioteca utilizando Composer:
Bases de datos compatibles
Nette Database es compatible con las siguientes bases de datos:
Servidor de base de datos | Nombre DSN | Soporte Explorer |
---|---|---|
MySQL (>= 5.1) mysql SÍ | ||
PostgreSQL (>= 9.0) pgsql SÍ | ||
SQLite 3 (>= 3.8) sqlite SÍ | ||
Oracle (oci) NO | ||
MS SQL (PDO_SQLSRV) sqlsrv SÍ | ||
MS SQL (PDO_DBLIB) mssql NO | ||
ODBC odbc NO |
Dos enfoques del trabajo con bases de datos
Con Nette Database, puede escribir consultas SQL directamente (modo SQL) o dejar que SQL se genere automáticamente (modo Explorer). Veamos cómo ambos enfoques resuelven las mismas tareas:
Método SQL – Escribir consultas SQL
Explorer way – Generación automática de SQL
El método Explorer genera y optimiza automáticamente las consultas SQL. En el ejemplo anterior, el ejemplo SQL way genera N+1 consultas (una para los autores y otra para los libros de cada autor), mientras que el Explorer realiza solo dos consultas optimizadas: una para los autores y otra para todos sus libros.
Puede combinar libremente ambos enfoques en su aplicación según sus necesidades.
Conexión y configuración
Para conectarse a la base de datos, basta con crear una instancia de la clase Nette\Database\Connection:
El parámetro $dsn
(Data Source Name) sigue el mismo formato que utiliza PDO, por ejemplo,
host=127.0.0.1;dbname=test
. Si la conexión falla, lanza el mensaje
Nette\Database\ConnectionException
.
Sin embargo, un método más conveniente es utilizar la configuración de la aplicación.
Añade una sección database
, y se crearán los objetos necesarios, incluyendo un panel de base de datos en la barra
de depuración de Tracy.
Después de esto, el objeto de conexión puede ser recuperado como un servicio desde el contenedor DI, por ejemplo:
Para más información, véase configuración de la base de datos.
Creación manual del explorador
Si no está utilizando el contenedor Nette DI, puede crear manualmente una instancia de
Nette\Database\Explorer
:
Gestión de conexiones
Cuando se crea un objeto Connection
, éste se conecta automáticamente a la base de datos. Si desea retrasar la
conexión, active el modo perezoso en la configuración configurando lazy
,
o hágalo así:
Para gestionar la conexión, utilice los métodos connect()
, disconnect()
, y
reconnect()
.
connect()
establece una conexión si aún no se ha establecido y puede lanzar unNette\Database\ConnectionException
.disconnect()
se desconecta de la base de datos.reconnect()
se desconecta y luego se vuelve a conectar a la base de datos, y también puede lanzar unNette\Database\ConnectionException
.
Además, puedes monitorizar los eventos de conexión usando el evento onConnect
, que es un array de callbacks
ejecutados después de conectarse a la base de datos.
Barra de depuración de Tracy
Si utiliza Tracy, el panel Base de Datos de la Barra de Depuración se activa automáticamente. Muestra todas las consultas ejecutadas, sus parámetros, el tiempo de ejecución y la ubicación en el código donde fueron llamadas.
