Я просматриваю унаследованный код со следующим (частичным) классом:
class Model_UserGenre extends Zend_Db_Table_Abstract {...
$select = $this->select()->from(array('ug' => $this->_name), array('user_id'))
->where('genre_id IN (?)', $genreID)
->orwhere('sub_genre_id IN(?)', $genreID)
->group(array('ug.user_id'));
$result = $this->fetchAll($select);
return $result;
...}
Это просто пример кода. Я не знаком с Zend и пытался быстро прочитать методы Zend DB, но мне кажется, что это излишне сложно по сравнению с простым вводом строки запроса, когда я не использую полностью динамический запрос
Предоставляет ли Zend, особенно в этом случае, какие-то динамические возможности или эффективность, которых нет в прямом запросе MySQL или PDO?
Спасибо и извините за нубистский вопрос.
Построитель запросов находится как слой удобства использования поверх PDO. Он обеспечивает некоторую удобную функциональность, которой нет у PDO, как, например, IN
заявления. Это также для реализации шаблон дизайна адаптера, где ваш драйвер базы данных может быть очень легко заменен.
По сути, PDO все равно потребует от вас написания необработанного SQL, тогда как построитель запросов сделает это за вас. Любой SQL, сгенерированный построителем запросов, будет действителен для любого адаптера SQL, поддерживаемого построителем запросов (например, PostgreSQL, MySQL, SQLite).
Других решений пока нет …