3

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

一个比另一个更优化?与一个或另一个连接“更容易”吗?

谢谢!

4

1 回答 1

11

由于历史原因,产生查询有几个不同的选项。

在 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,因为您可以只更改方法调用和参数,而不是操作字符串。

如果您调用它的 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 不是无限灵活的,但它易于阅读、操作和使用。

于 2010-10-29T12:06:39.243 回答