Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Класс для работы с БД


Автор: WolfAlone 22.1.2010, 21:26
Здравствуйте! Подскажите пожалуйста, класс для работы с БД (mysql, sqlite и пр.) в стиле Active Record (или как это правильно называется?).
То есть, интересует класс с конструктором запросов, например:

"Обычный класс"
Код

$db=DBClass();
$db->query("SELECT * FROM table");


Active Record:
Код

$db->select("table_name")->where("id", 1);


Собственно больше всего интересует класс, позволяющий работать с БД, без перезаписи запросов, независимо от типа БД.

Автор: sTa1kEr 22.1.2010, 22:41
http://framework.zend.com/manual/ru/zend.db.select.html

Автор: skyboy 23.1.2010, 00:29
из известных ORM: http://www.doctrine-project.org/(c ней работал) и http://propel.phpdb.org/(про этого товарища только читал).
c другой стороны, если речь только об попытке оторваться от конкретной СУДБ, то есть же всякие механизмы абстракции: http://en.wikipedia.org/wiki/PDO c http://pear.php.net/package/MDB2/redirected и прочие http://adodb.sourceforge.net/. возможно, ORMность у них и не на высоте, но в качестве механизма абстракции работают ведь.

Автор: HeliosArt 23.1.2010, 00:49
То, что вы ищете называется не Active Record, а Query Builder.

Вот описание Active Record в книге Фаулера:
Цитата

Объект, выполняющий роль оболочки для строки таблицы или представления базы данных. Он инкапсулирует доступ к базе данных и добавляет к данным логику домена.


Для наглядности пример:
Код

$record = new Person();
$record->load(1) // public function load($value, $field = 'id') { ... }
    ->setName('John Doe')
    ->setEmail('some@email.com')
    ->save();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)