我正在尝试在查询中使用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