限制执行查询后返回的行数

时间:2014-03-07 19:04:45

标签: php jquery mysql zend-framework

我正在使用ZEND MVC框架,在我的模态部分(表部分)中执行查询后,查询返回12行。我正在传递服务部分中返回的行,并进一步将结果传递给控制器​​,这将为我提供前端的最终视图。

我想在视图部分中将行数限制为3。我不能在我的查询中使用LIMIT 3,因为我进一步与其他查询进行交互并比较结果,所以我需要拥有所有12行。是否有可能以某种方式将限制放在服务部分?

这是我的代码。虽然我不需要把我的代码放在每一位,但这会给出一个清晰的想法。

模态(表格部分)

 public function getJobTopStatements( UserJobEntity $activeJob, $intervalInMonths = NULL ){

        if($intervalInMonths){
            $interval = ' AND ss.datetime < ADDDATE( NOW(), INTERVAL -'.$intervalInMonths.' MONTH) ';
        }

        $testQuestionTable = $this->getServiceLocator()->get('testQuestionTable');
        $questionAnswerTable = $this->getServiceLocator()->get('questionAnswerTable');
        $testAnswerTable = $this->getServiceLocator()->get('testAnswerTable');

        $query = 'SELECT
                t.id,  
                t.text,
                t.key,
                s.answer
        FROM '. $testQuestionTable->getTable() .' AS t
        LEFT JOIN '. $questionAnswerTable->getTable() .' as s ON (s.testQuestionId = t.id)
        LEFT JOIN '. $testAnswerTable->getTable() .' as m ON (m.id = s.testAnswerId AND
              m.id = (SELECT MAX(ss.id)
                    FROM ' . $testAnswerTable->getTable() . ' as ss
                    WHERE ss.userJobId = '. $activeJob->getId() .'
                    '.$interval.'
                )
        )
        WHERE m.userJobId = '. $activeJob->getId() .'
        GROUP BY t.id
        ORDER BY m.id DESC, s.answer DESC';

        return $this->adapter->query($query, 'execute')->toArray();
    }

此查询返回12行,我将结果传递到服务部分,如下所示

public function getActiveJobTopStatements(){

        $activeJob = $this->userService->getUserActiveJob();

        if(!$activeJob){
            return array();
        }

        $result = $this->testAnswerTable->getJobTopStatements( $activeJob );
        return $result;
    }

最后控制器部分返回此视图

$view->jobTopStatements = $testAnswerService->getActiveJobTopStatements();

我有什么方法可以在服务部分设置限制,这样它只会传递3行而不是12行?

0 个答案:

没有答案