【问题标题】:Make query on a rowset of a previous query Zend对先前查询 Zend 的行集进行查询
【发布时间】:2013-02-14 17:33:53
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: php mysql zend-framework rowset


    【解决方案1】:

    我认为您正在寻找“嵌套选择”。在 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();
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多