2012-04-02 4 views
6

Я создаю приложение, которое должно иметь конструктор запросов MySQL в стиле ООП. Я хочу иметь возможность гибко строить сложные запросы, используя только PHP, и получать итоговую строку запроса для выполнения с помощью моего собственного драйвера базы данных.MySQL query builder PHP-класс

Кто-нибудь знает о хорошем автономном построителе запросов для PHP? Имейте в виду, что мне не нужен драйвер базы данных. Мне нужен класс MySQL query builder (желательно, написанный с функцией стиля верблюда и именами переменных).

ответ

5

Наконец я взял Doctrine ORM

и модифицировал его немного, чтобы построить SQL вместо DQL.

Это работает очень хорошо и способно создавать сложные запросы.

Edit: Вы можете найти свою окончательную стабильную реализацию в Stingle рамках. Посмотрите на плагин Db/QueryBuilder.

+0

Можете ли вы обновить ссылку, пожалуйста? – TheCrazyProfessor

+0

Обновленная ссылка, пожалуйста, посмотрите –

0

Существует одна версия построителя запросов (лицензия LGPL). Я не использовал его, но вы можете захотеть взглянуть на него, если он соответствует вашим целям: http://code.google.com/p/mysql-query-builder/

+0

Это очень хороший, но у него нет способности делать левые, внутренние, внешние соединения. –

+3

Как это может быть «очень хорошо», но не поддерживает соединения? Это очень важно. Он также не тронут более 3 лет, может иметь неопределенную поддержку в отношении новых версий PHP. – Cylindric

1

Библиотека Библиотека PhpToolCase имеет автономный инструмент построения запросов, который довольно прост и удобен в использовании.

Существует полная поддержка присоединиться как хорошо: http://phptoolcase.com/guides/ptc-qb-guide.html

И я, это, кажется, написана с функцией верблюд стиля и имена переменных :)

2

DSQL - Query Builder для PHP это именно то, что вы ищете для, никаких зависимостей и не имеет 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

Документация: http://dsql.readthedocs.io/