对先前查询Zend的行集进行查询

时间:2013-02-14 17:33:53

标签: php mysql zend-framework rowset

我想在一个行集上执行一个MySQL查询,zend select从另一个查询返回我。

原因是我需要先前的“更一般”查询,然后根据我的需要获得更精确的行。

有没有办法避免向数据库发出另一个请求?

长话以来,我正在使用自动完成插件,它会返回与用户输入模式匹配的不同城市的信息。这是一个非常挑剔的查询,我希望每当用户将某些参数更改为与所讨论的城市无关的查询时,我都会避免这样做。

因此,自动完成功能会返回一个包含多个城市的行集,并且我希望“消除”其中一些不符合用户选项的行,例如价格范围,距离等。

我希望尽可能保留该行集并对其执行一些过滤,而不是每次都直接向数据库请求新的行集。

有没有办法在该行集上执行MySQL查询,还是必须将其转换为数组并对它们进行“手动”过滤?

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找'嵌套选择'。在Zend_DB中你可以像在这篇文章中那样做:

  

Nested Select using Zend Db

如果您的项目中有Doctrine 1.x,则可以执行此DQL查询:

$q = new Doctrine_RawSql();
        $q->addComponent('m', 'Application_Model_Table')
        ->from('(SELECT * FROM table2 m2 WHERE ... // here is first query

        ) AS m') // IMPORTANT- name as m !
            ->orderBy('m.created ASC')
            ->limit($limit)
            ->where(' // connect tables or give 2\'nd where');
        return $q->execute();

我希望这就是你要找的东西