2010-09-01 32 views
0

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

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

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

编辑:

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

这样做的原因是:

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

+0

帮助我们通过发布您的代码来帮助您。很难猜测你需要什么。 – Iznogood 2010-09-01 15:01:33

+0

这里是我的代码: myfunction($ obj1,$ obj2) { print_r($ obj1); print_r($ obj2); } 像这样会有所帮助。我有两个Zend_Db_Table_Row对象 - 在内存中。而已。我想查询这两个对象。如果这是不可能的,我只需要 - > toArray()并使用一堆if语句。 Yuck ... – 2010-09-02 02:17:36

+0

你熟悉'JOIN's吗?如果你发布你的代码和你的数据库的结构,这将会有所帮助。 – 2010-09-04 09:50:57

回答

0

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

您应该使用在你的模型findDependentRowset()Zend_Db_Table类来定义表之间的关系,ZF会那么写语句组合,为您JOIN表一起,结合的数据会在你Zend_Db_Table_Row对象您查询datbase后。

或者您可以使用join()作为详细的hereJOIN两张或更多的表格在一起。您需要对正在查询的选定对象执行连接。您需要使用数据库引擎的强大功能来获取所需的数据。这样做在PHP中使用数据库要慢得多。

+0

这就是我正在寻找的答案。您无法查询Zend_Db_Table_Row对象。我认为从Zend_Db_Table_Row对象可能会出现一些Zend机制。我想这是一厢情愿的想法。该对象已经在内存中。我不打算再次查询数据库。 我已经超越了复杂的if结构。这不是太糟糕 - 5如果发言。 – 2010-09-04 12:12:13

1

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

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

+0

我已经有内存中的对象。我能否对他们进行查询? – 2010-09-02 02:19:42

+1

假设您可以在您的Zend_Db_Table类中定义关系并将其返回到内存中。 – Tim 2010-09-02 09:13:02

+0

我该怎么做? $ rowobj-> fetchRow($选择); ? – 2010-09-04 05:10:11