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

Php 限制执行查询后返回的行数,php,jquery,mysql,zend-framework,Php,Jquery,Mysql,Zend Framework,我正在使用ZEND MVC框架,在模态零件表部分执行查询后,查询返回12行。我在服务部分传递返回的行,并进一步将结果传递给控制器,控制器将为我提供前端的最终视图 我想将视图部分中的行数限制为3。我不能在我的查询中使用限制3,因为我正在与其他查询进一步交互并比较结果,所以我需要所有12行。是否有可能在服务区设置限制 这是我的密码。虽然我不需要把我的每一个代码位,但这将给出一个明确的想法 模态表部件 public function getJobTopStatements( UserJobEntit

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

我想将视图部分中的行数限制为3。我不能在我的查询中使用限制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();
    }
最后,控制器部分返回这个视图

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

有没有办法在服务部分设置限制,使其只通过3行而不是12行?

可能会在getActiveJobTopStatements中添加一个参数,指定结果的最大数量,所有结果的默认值为0?你的意思是使用该函数限制MYSQL吗?@Jack先生,没错。如果我在MYSQL中使用LIMIT函数,它只会给我3行,但我需要所有12行,以便对其他查询进行进一步计算。只调用一次,您似乎会将其存储在一个数组中,然后您可以-调用两次,您可以为每个调用指定不同的限制。@Nish这样做会使结果仅为3行。您需要在返回后进行切片,仅针对在其中使用它的函数。哪一段代码调用getActiveJobTopStatements$查看->jobTopStatements=$testAnswerService->getActiveJobTopStatements;然后添加另一个变量$topthreeJobStatements=array_slice$view->jobTopStatements,0,3;
$view->jobTopStatements = $testAnswerService->getActiveJobTopStatements();