2014-12-30 3 views
0

Я использую простой оператор select, используя SQL_CALC_FOUND_ROWS в zf2. Код будет выглядеть следующим образом и использует квантификатор.SQL_CALC_FOUND_ROWS + zf2

$select = $this->getSlaveSql()->select('posts'); 
$select->quantifier(new Expression('SQL_CALC_FOUND_ROWS')); 
$select->columns([ 
     'total'=>new Expression("FOUND_ROWS()"), 
     '*' 
]); 

И сгенерированный SQL, как показано ниже

SELECT SQL_CALC_FOUND_ROWS FOUND_ROWS() AS `total`, `posts`.* FROM `posts` 

скриншот: enter image description here

Но по некоторым причинам, FOUND_ROWS всегда возвращается как 0, и я не хочу, чтобы добавить второй запрос для разбивки на страницы. Пожалуйста помоги.

ответ

3

FOUND_ROWS() обычно используется в последующих запросах. Я сомневаюсь, что вы можете запустить его в том же, на котором вы выбрали данные. См. Пример в документах: http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows

Также обратите внимание, что SQL_CALC_FOUND_ROWS не имеет смысла в запросе без ограничения.

+0

У меня такая же проблема с ограничением тоже. Использование SELECT SQL_CALC_FOUND_ROWS FOUND_ROWS() AS 'total',' posts'. * FROM 'posts' LIMIT '10' также не имеют эффекта :( – Laxman

+0

Ну, как я уже сказал, вызов' FOUND_ROWS() должен быть в отдельном запрос после того, как вы выбрали данные сообщений. –

+0

спасибо tim, проблема решена с помощью другого запроса select для found_rows(), как вы сказали. – Laxman

Смежные вопросы