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

标签 zend-framework zend-db zend-db-table zend-db-select

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

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

谢谢!

最佳答案

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

在 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 查询的编程接口(interface)。它非常适合根据用户输入或不同因素更改部分 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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4050967/

相关文章:

php - 我应该从 Zend_Db 移植到哪个 native mysql 类? (无 PDO 或 Mysqli)

zend-framework - Zend_Db_Table UTF-8 字符

zend-framework - 如何在 where 子句中使用 Zend_Db_Table->update() 绑定(bind)变量

zend-framework - Zend框架-如何编写group by查询

php - 使用 Zend_Db_Expr

php - 从 Zend 中的 2 个表获取结果

php - 插入数组上的 zend db 引号(转义)将引号添加到字符串

zend-framework - 如何在 Zend Framework Query 中查找两个日期之间的所有日期

zend-framework - Zend_Db_Table_Abstract 删除

php - Zend Framework - 在嵌套查询中使用别名会导致问题