FluentPDO es un generador de consultas PHP SQL que utiliza PDO. Es una biblioteca rápida y liviana que cuenta con un generador de combinaciones inteligente, que crea automáticamente combinaciones de tablas para usted.
Interfaz sencilla para crear consultas sólidas
Soporta cualquier base de datos compatible con PDO
Capacidad para crear consultas complejas de SELECCIONAR, INSERTAR, ACTUALIZAR Y ELIMINAR con poco código
Escriba sugerencias para métodos mágicos con finalización de código en IDE inteligentes
La versión estable de FluentPDO y mantenida activamente. Oficialmente es compatible con PHP 7.3 hasta PHP 8.0, pero puede funcionar con versiones anteriores de PHP 7.
La versión heredada de FluentPDO. Ya no es compatible y no se mantendrá ni actualizará. Esta versión funciona con PHP 5.4 a 7.1.
Esta versión es una reescritura completa de Fluent desde cero. Su principal ventaja es un uso de memoria significativamente menor y un rendimiento mucho mayor en la creación de consultas. También impone algunas restricciones adicionales para que las consultas sean más fáciles de leer y mantener. La documentación también ha sido una solicitud muy común y la versión 3 se está documentando completamente junto con el desarrollo. Los detalles y las métricas se publicarán una vez que estén disponibles.
Sitepoint - Primeros pasos con FluentPDO
La forma preferida de instalar FluentPDO es mediante Composer.
Agregue la siguiente línea en su archivo composer.json
:
"require": { ... "envms/fluentpdo": "^2.2.0" }
actualice sus dependencias con composer update
y ¡listo!
Si prefiere no utilizar Composer, descargue la última versión, cree el directorio Envms/FluentPDO
en el directorio de su biblioteca y coloque este repositorio en él. Finalmente, agregue:
requiere '[lib-dir]/Envms/FluentPDO/src/Query.php';
al principio de su aplicación. Nota: Necesitará un cargador automático para usar FluentPDO sin cambiar su código fuente.
Cree una nueva instancia de PDO y pásela a FluentPDO:
$pdo = nuevo PDO('mysql:dbname=fluentdb', 'usuario', 'contraseña');$fluido = nuevo EnvmsFluentPDOQuery($pdo);
Entonces, crear consultas es rápido y sencillo:
$consulta = $fluido->de('comentario') ->dónde('artículo.published_at > ?', $fecha) ->orderBy('publicado_en DESC') ->límite(5);
que construiría la siguiente consulta:
SELECCIONAR comentario.*DE comentario IZQUIERDA UNIRSE al artículo EN artículo.id = comentario.artículo_idDÓNDE artículo.published_at > ?ORDER POR artículo.published_at DESCLIMIT 5
Para obtener datos de la selección, todo lo que hacemos es recorrer la matriz devuelta:
foreach ($consulta como $fila) {echo "$fila['título']n"; }
Comencemos con una unión tradicional, a continuación:
$consulta = $fluido->de('artículo') ->leftJoin('usuario ON usuario.id = artículo.user_id') ->select('nombre.usuario');
Eso es bastante detallado y no muy inteligente. Si sus tablas usan nombres de clave primaria y externa adecuados, puede acortar lo anterior a:
$consulta = $fluido->de('artículo') ->leftJoin('usuario') ->select('nombre.usuario');
Eso es mejor, pero no ideal. Sin embargo, sería aún más fácil no escribir ninguna combinación :
$consulta = $fluido->de('artículo') ->select('nombre.usuario');
Impresionante, ¿verdad? FluentPDO puede crear la combinación por usted anteponiendo el nombre de la tabla externa a la columna solicitada.
Los tres fragmentos anteriores crearán exactamente la misma consulta:
SELECCIONE artículo.*, nombre.usuario DEL artículo IZQUIERDA UNIRSE al usuario EN user.id = artículo.user_id
Finalmente, siempre es una buena idea liberar recursos tan pronto como terminen con sus tareas:
$fluido->cerrar();
$consulta = $fluido->from('artículo')->where('id', 1)->fetch();$consulta = $fluido->from('usuario', 1)->fetch(); // versión más corta si se selecciona una fila por clave principal
$valores = array('título' => 'artículo 1', 'contenido' => 'contenido 1');$consulta = $fluent->insertInto('artículo')->valores($valores)->ejecutar( );$consulta = $fluido->insertInto('artículo', $valores)->ejecutar(); // versión más corta
$set = array('published_at' => new FluentLiteral('NOW()'));$consulta = $fluent->update('article')->set($set)->where('id', 1 )->ejecutar();$consulta = $fluido->actualizar('artículo', $conjunto, 1)->ejecutar(); // versión más corta si se actualiza una fila por clave principal
$consulta = $fluido->deleteFrom('artículo')->donde('id', 1)->ejecutar();$consulta = $fluido->deleteFrom('artículo', 1)->ejecutar(); // versión más corta si se elimina una fila por clave principal
Nota : las consultas INSERTAR, ACTUALIZAR y ELIMINAR solo se ejecutarán después de llamar a ->execute()
Gratis para uso comercial y no comercial bajo las licencias Apache 2.0 o GPL 2.0.