2012-04-02 14 views
6

Ich bin Anwendung erstellen, die OOP-Stil MySQL Query Builder haben muss. Ich möchte in der Lage sein, komplexe Abfragen flexibel nur mit PHP zu erstellen und die resultierende Abfragezeichenfolge zur Ausführung mit meinem eigenen Datenbanktreiber zu bekommen.MySQL Query Builder PHP-Klasse

Kennt jemand einen guten eigenständigen Query Builder für PHP? Bitte beachten Sie, dass ich keinen Datenbanktreiber benötige. Ich brauche eine reine MySQL Query Builder Klasse (vorzugsweise mit camel style Funktions- und Variablennamen geschrieben).

Antwort

5

Schließlich nahm ich Doctrine ORM

und modifiziert es wenig SQL zu bauen statt DQL.

Das funktioniert sehr gut und es ist in der Lage, komplexe Abfragen zu erstellen.

Bearbeiten: Sie können meine endgültige stabile Implementierung in Stingle Framework finden. Schauen Sie sich das Db/QueryBuilder Plugin an.

+0

können Sie den Link bitte aktualisieren? – TheCrazyProfessor

+0

Aktualisiert den Link, bitte sehen Sie –

0

Dort ist eine Version des Abfrage-Erstellers (LGPL lizensiert). Ich habe es nicht, aber Sie vielleicht einen Blick darauf werfen wollen, wenn es Ihre Zwecke passt: http://code.google.com/p/mysql-query-builder/

+0

Dieser sehr gute, aber es fehlt die Fähigkeit, linke, innere, äußere Verbindungen zu machen. –

+3

Wie kann es "sehr gut" sein, aber nicht unterstützt Joins? Das ist ziemlich fundamental. Es ist auch seit über 3 Jahren unangetastet, möglicherweise unklare Unterstützung bei neueren PHP-Versionen. – Cylindric

1

Die PhpToolCase-Bibliothek verfügt über ein eigenständiges Query Builder-Tool, das relativ einfach und handlich zu verwenden ist.

Es voll beitreten ist die Unterstützung als gut: http://phptoolcase.com/guides/ptc-qb-guide.html

Und ya, so scheint es, mit Kamel Stil Funktions- und Variablennamen geschrieben zu werden :)

2

DSQL - Query Builder für PHP ist genau das, was Sie suchen für, keine Abhängigkeiten und hat MIT-Lizenz:

$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

Dokumentation: http://dsql.readthedocs.io/