Когда использовать какой класс Zend_Db?Zend_Db_Select vs. Zend_Db_Table_Abstract - PullRequest
3 голосов
/ 29 октября 2010

I думаю, можно написать запросы на выборку либо с Zend_Db_Select, либо с Zend_Db_Table_Abstract, но я не понимаю, когда использовать, какой из двух.

еще один оптимизирован для чего-то, кромедругой?"Соединения" легче с одним или другим?

Спасибо!

1 Ответ

11 голосов
/ 29 октября 2010

Существует несколько различных вариантов создания запросов по историческим причинам.

В ранних версиях Zend Framework Zend_Db_Tables имел метод fetchAll с параметрами where, order, offset и limitкоторый вы могли бы использовать для извлечения строк из таблицы.Разработчики вскоре нашли ограничения с этим подходом.Как бы вы добавили предложение GROUP BY?

Zend_Db_Select был изобретен для решения этой проблемы, и вы заметите, что начиная с ZF 1.5, fetchAll и связанные методы принимают экземпляр Zend_Db_Select в качествеПервый параметрИспользование других параметров fetchAll теперь не рекомендуется, и вам следует передавать либо строку SQL, либо объект Zend_Db_Select.

Zend_Db_Select - это просто программный интерфейс для построения запроса SQL.Он отлично подходит для изменения частей SQL на основе пользовательского ввода или различных факторов, поскольку вместо манипулирования строками вы можете просто изменить вызовы методов и аргументы.

Zend_Db_Table вернет экземпляр Zend_Db_Table_Select (подкласс Zend_Db_Select) с заранее заданным именем таблицы, если вы вызываете его метод select - это примерно единственное различие между Zend_Db_Select и Zend_Db_Table_Select.

На самом деле ваше рассмотрениеиспользовать ли Zend_Db_Select или писать SQL вручную.Zend_Db_Select не бесконечно гибок, но с ним легко читать, манипулировать и работать.

...