如何查询Zend_Db_Table_Row

时间:2010-09-01 14:58:36

标签: php sql zend-framework zend-db-table zend-db-select

是否可以针对Zend_Db_Table_Row对象运行SQL(Zend_Db_Select)查询?加入两个Zend_Db_Table_Row对象怎么样?

我知道这听起来有点迟钝,但我正在处理数百和数千行。我已经拥有了我正在操作的行对象,因此我不想再次查询数据库。

我希望这很清楚。如果没有,请让我澄清。

修改

为了澄清,对象在内存中。我已经从数据库中检索了它们。

原因是:

“日志”表中有数千条记录。我需要根据多个用户定义的标准对这些做出反应。处理这些日志时,时间很重要。有一个新的流程是分叉的,以便及时实现。为每个日志分叉一个新进程。因此,对象已经存在于内存中。

2 个答案:

答案 0 :(得分:1)

考虑定义关系,然后在Row对象上调用findDependentRowset():

http://framework.zend.com/manual/en/zend.db.table.relationships.html

答案 1 :(得分:0)

您拥有的Zend_Db_Table_Row个对象是行,无法查询它们,因为它们不再存在于数据库中,它们作为ZF的一部分存储在内存中。它们是由PHP处理的内存中的一组数据 - 它们不再与数据库有任何关系,因此无法按照您的建议查询它们。

您应该在模型或findDependentRowset()类中使用Zend_Db_Table来定义表之间的关系,然后ZF会将连接语句一起写入JOIN表,然后连接的数据将查询数据库后,请在Zend_Db_Table_Row个对象中。

或者,您可以将join()详细用作hereJOIN两个或多个表格。您需要在要查询的选择对象上执行连接。您需要使用数据库引擎的强大功能来获取所需的数据。在PHP中执行此操作要比使用数据库慢得多。