2012-04-02 27 views
6

Estoy construyendo una aplicación que necesita tener un constructor de consultas MySQL de estilo OOP. Quiero poder crear consultas complejas de forma flexible usando solo PHP y obtener la cadena de consulta resultante para la ejecución con mi propio controlador de base de datos.Generador de consultas MySQL clase PHP

¿Alguien sabe de un buen generador de consultas independiente para PHP? Tenga en cuenta que no necesito el controlador de base de datos. Necesito una clase de constructor de consultas MySQL (preferiblemente escrito con la función de estilo camello y nombres de variables).

Respuesta

5

Finalmente tomó Doctrine ORM

y modificaron poco para construir SQL en lugar de DQL.

Esto funciona muy bien y es capaz de construir consultas complejas.

Editar: Puede encontrar mi implementación final estable en Stingle marco. Mira el plugin Db/QueryBuilder.

+0

puede actualizar el enlace, por favor? – TheCrazyProfessor

+0

Actualizado el enlace, por favor eche un vistazo –

0

Hay una versión del generador de consultas allí (con licencia LGPL). Yo no lo he usado, pero puede que desee echar un vistazo a él, si se adapta a sus propósitos: http://code.google.com/p/mysql-query-builder/

+0

Esta muy buena, pero no tiene la capacidad de hacer uniones izquierda, interna, externa. –

+3

¿Cómo puede ser "muy bueno" pero no admite combinaciones? Eso es más o menos fundamental. Tampoco ha sido tocado por más de 3 años, puede tener soporte incierto en las versiones PHP más nuevas. – Cylindric

1

La biblioteca PhpToolCase tiene una herramienta de creación de consultas independiente que es bastante fácil y práctica de usar.

Hay aswell completo apoyo unirse a: http://phptoolcase.com/guides/ptc-qb-guide.html

Y ya, parece estar escrito con función de estilo camello y nombres de variables :)

2

DSQL - Generador de consultas para PHP es exactamente lo que estás buscando para, sin dependencias y tiene licencia MIT:

$query = new atk4\dsql\Query(); 
$query ->table('employees') 
    ->where('birth_date','1961-05-02') 
    ->field('count(*)') 
    ; 
echo "Employees born on May 2, 1961: ".$query->getOne(); 

https://github.com/atk4/dsql

Documentación: http://dsql.readthedocs.io/