我正在尝试在查询中使用SQL_CALC_FOUND_ROWS。但是没有AS Expression1我就无法创建查询

$select = $this->getSql()->select();
            $select->columns(array("*", new Expression(" SQL_CALC_FOUND_ROWS *")));
            $select->join( array (
                    'c2h' => 'site_category2help_topic' ), 'c2h.help_topic_id = site_help_topic.help_topic_id', array (
                    "*" ) );
            $select->where( " c2h.category_id = $categoryId " );
            $select->limit($limit);
            $select->offset($offset);


结果:

SELECT site_help_topic.*, SQL_CALC_FOUND_ROWS * *AS Expression1*, c2h.*

FROM site_help_topic

INNER JOIN site_category2help_topic AS c2h

ON c2h.help_topic_id = site_help_topic.help_topic_id

WHERE c2h.category_id = 5 LIMIT '15' OFFSET '0'


它应该是 :

SELECT site_help_topic.*, SQL_CALC_FOUND_ROWS *, c2h.*

FROM site_help_topic

INNER JOIN site_category2help_topic AS c2h

ON c2h.help_topic_id = site_help_topic.help_topic_id

WHERE c2h.category_id = 5 LIMIT '15' OFFSET '0'

最佳答案

Sql \ Select有一个选项QUANTIFIER,您应该可以使用它而不是将其作为列名。

类似于这里How to use SQL_CALC_FOUND_ROWS with Zend\Db\TableGateway

07-24 15:12