0

我想对 zend 选择从另一个查询返回给我的行集执行 MySQL 查询。

原因是我需要之前的“更一般”的查询,然后需要根据我想要从他们那里得到的更精确的行。

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

长话短说,我正在使用一个自动完成插件,它返回有关与用户输入模式匹配的不同城市的信息。这是一个挑剔的查询,我想避免每次用户更改查询的某些参数时都进行,这些参数与所讨论的城市无关。

因此,自动完成功能返回给我一个包含多个城市的行集,并且我想从中“消除”其中一些与价格范围、距离等用户选项不对应的行集。

我想尽可能地保持该行集最长,并对它执行一些过滤,而不是每次都直接向数据库请求一个新的行集。

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

4

1 回答 1

0

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

使用 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();

我希望这就是你要找的

于 2013-02-20T12:06:58.227 回答