zend-framework – 何时使用哪个Zend_Db类? Zend_Db_Select与Zend_Db_Table_Abstract

我认为可以使用Zend_Db_Select或Zend_Db_Table_Abstract编写选择查询,但我不明白何时使用两者中的哪一个.

一个比另一个更优化的东西?与其中一个连接“更容易”吗?

谢谢!

最佳答案
出于历史原因,在生成查询时有几种不同的选项.

在Zend Framework的早期版本中,Zend_Db_Tables有一个方法fetchAll,其中包含参数,顺序,偏移和限制,您可以使用这些参数从表中获取行.开发人员很快发现了这种方法的局限性.你会如何添加GROUP BY子句?

Zend_Db_Select是为解决这个问题而发明的,你会注意到,自ZF 1.5起,fetchAll和相关方法接受Zend_Db_Select实例作为第一个参数.现在不推荐使用fetchAll的其他参数,您应该传入SQL字符串或Zend_Db_Select对象.

Zend_Db_Select只是用于构建SQL查询的编程接口.它非常适合根据用户输入或不同因素更改SQL的各个部分,因为您可以只更改方法调用和参数,而不是操作字符串.

如果调用其select方法,Zend_Db_Table将返回Zend_Db_Table_Select(一个Zend_Db_Select子类)实例及其表名预定义 – 这是Zend_Db_Select和Zend_Db_Table_Select之间的唯一区别.

您的考虑实际上是使用Zend_Db_Select还是手动编写SQL. Zend_Db_Select不是无限灵活,但它易于阅读,操作和使用.

转载注明原文:zend-framework – 何时使用哪个Zend_Db类? Zend_Db_Select与Zend_Db_Table_Abstract - 代码日志